国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unity物體移動至指定位置

這篇具有很好參考價值的文章主要介紹了unity物體移動至指定位置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

世界坐標與局部坐標之間的轉(zhuǎn)換

在Unity中,物體的坐標分為局部坐標世界坐標。
局部坐標是相對于物體的父對象的坐標系,而世界坐標是相對于場景的整體坐標系。

使用transform.position屬性來獲取物體在世界坐標系下的坐標。
使用transform.localPosition屬性來獲取物體在世界坐標系下的坐標。
使用transform.TransformPoint將局部坐標系轉(zhuǎn)換為世界坐標系。
使用transform.InverseTransformPoint世界坐標系轉(zhuǎn)換為局部坐標系。

舉個例子
unity移動到指定位置,unity,游戲引擎

unity移動到指定位置,unity,游戲引擎
將下面代碼掛載到Sphere上

public class Coordinate : MonoBehaviour
{
    public GameObject SomeThing;
    public Vector3 SomePoint;

    void Start()
    {
        Debug.Log("世界坐標:" + transform.position);
        Debug.Log("局部坐標:" + transform.localPosition);

        Debug.Log("當前坐標:" + SomePoint);
        Vector3 worldPoint = transform.TransformPoint(SomePoint);
        Debug.Log("局部坐標轉(zhuǎn)為世界坐標:" + worldPoint);
        Vector3 localPoint = transform.InverseTransformPoint(worldPoint);
        Debug.Log("世界坐標轉(zhuǎn)為局部坐標:" + localPoint);
    }
}

輸出結(jié)果如下
unity移動到指定位置,unity,游戲引擎

如果想讓物體運動到指定的位置,通常情況下是參考世界坐標系。因為世界坐標系是整個場景的坐標系,而局部坐標系是相對于物體的父對象的坐標系。假設(shè)想讓物體移動到坐標為(x,y,z)的位置,參照世界坐標與局部坐標的物體運動代碼如下:

// 世界坐標下運動
transform.position = new Vector3(x, y, z);
// 局部坐標下運動
transform.localPosition = new Vector3(x, y, z);

如果想要實現(xiàn)多個物體以相同的速度按照順序移動到不同的位置,可以參考下一節(jié)。

物體移動至指定位置

需求

將一個由多個零部件組成的自定義模型導(dǎo)入unity中,希望實現(xiàn)該模型的部分拆卸過程。下面以共有11個拆卸步驟為例

思路

在網(wǎng)上找了很多資料,目前想到的辦法有利用協(xié)程或動畫播放的方法(這里只做了協(xié)程的方法,動畫的等我學會再加上)
1、首先是自定義的模型的拆卸,因此需要知道哪些零部件需要先拆,哪些后拆。
2、還需要考慮碰撞等干涉情況,因此下面代碼中有的零部件出現(xiàn)了多次。
3、將所有需要拆卸的零部件創(chuàng)建一個空父對象,下面這個代碼就掛載到空父對象上。
4、利用GameObject.Find()函數(shù),找到每個零部件,并放在一個數(shù)組里面,便于后續(xù)對每個零部件進行操作。
5、將每個零部件需要移動的指定位置與運動時間,同樣放在另外兩個數(shù)組里面。
6、零部件的移動,我使用的是DOTween插件中的DOLocalMove方法。

DOTween插件解析文章來源地址http://www.zghlxwxcb.cn/news/detail-745869.html

注意

下面代碼有待完善,如“每一步拆卸步驟所有的時間是不一樣的,但速度應(yīng)該是一樣,這個我目前還不知道如何解決,只知道運動的位移相同的零件,其運動速度是一樣的”
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

public class MoveTogether : MonoBehaviour
{
    //物體數(shù)組
    public GameObject[] objects;
    //物體名稱數(shù)組
    public string[] Names;
    //目標位置數(shù)組
    public Vector3[] targetPositions;
    //運動時間數(shù)組
    public float[] moveTime;
    void Start()
    {
        Names = new string[]
        { 
            "一移動螺絲", 
            "一移動螺絲", 
            "中間部分", 
            "鐵片1螺絲",
            "鐵片1",
            "鐵片2螺絲",
            "鐵片2",
            "鐵片3螺絲",
            "鐵片3",
            "整體下方", 
            "整體下方" };

        objects = new GameObject[Names.Length];
        for (int i = 0; i < Names.Length; i++)
        {
            objects[i] = GameObject.Find(Names[i]);
        }
        
        targetPositions = new Vector3[] 
        { new Vector3(0f, 0f, -0.5f),  //一移動螺絲向下
          new Vector3(3f, 0f, -0.5f),  //一移動螺絲向右
          new Vector3(0f, 0f, -0.8f), //中間部分向下
          new Vector3(3f, 0f, 0f),    //鐵片1螺絲向外
          new Vector3(3f, 0f, 0f),    //鐵片1向外
          new Vector3(0f, -2f, 0f),  //鐵片2螺絲向外
          new Vector3(0f, -2f, 0f),  //鐵片2向外
          new Vector3(-3f, 0f, 0f),  //鐵片3螺絲向外
          new Vector3(-3f, 0f, 0f),  //鐵片3向外
          new Vector3(0f, 0f, -0.3f),  //整體下方向下
          new Vector3(3f, 0f, -0.3f) }; //整體下方向右

        moveTime = new float[] { 1f,3f,2f,2f,2f,2f,2f,2f,2f,2f,3f };
        StartCoroutine(Spilt_Merge());
    }
    IEnumerator Spilt_Merge()
    {
        //StepA.transform.DOLocalMove(targetStepA1, moveSpeed).SetEase(Ease.Linear);
        for (int i = 0; i < objects.Length; i++)
        {
            if (i > 0)
            {
                yield return objects[i - 1].transform.DOLocalMove(targetPositions[i - 1], moveTime[i - 1]).WaitForCompletion();
            }
            yield return objects[i].transform.DOLocalMove(targetPositions[i], moveTime[i]).WaitForCompletion();
        }      
    }
}

到了這里,關(guān)于unity物體移動至指定位置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity 之transform.LookAt() 調(diào)整一個物體的旋轉(zhuǎn),使其朝向指定的位置

    Unity 之transform.LookAt() 調(diào)整一個物體的旋轉(zhuǎn),使其朝向指定的位置

    transform.LookAt 是 Unity 引擎中 Transform 組件的一個方法,用于調(diào)整一個物體的旋轉(zhuǎn),使其朝向指定的位置。通常情況下,它被用來使一個物體(如攝像機、玩家角色等)朝向另一個物體、位置或方向。以下是關(guān)于 transform.LookAt 方法的詳細介紹: 方法簽名: 參數(shù)說明: target :要

    2024年02月09日
    瀏覽(29)
  • 【Unity腳本開源】記錄鼠標按下的位置和移動的距離來進行物體的旋轉(zhuǎn),并在鼠標釋放后將物體恢復(fù)到初始旋轉(zhuǎn)位置

    ??作者:白日參商 ???♂?個人主頁:白日參商主頁 ??堅持分析平時學習到的項目以及學習到的軟件開發(fā)知識,和大家一起努力呀!??! ????加油! 加油! 加油! 加油 ??歡迎評論 ??點贊???? 收藏 ??加關(guān)注+! 提針對這個需求,以下是示例腳本代碼: ??作者

    2024年02月12日
    瀏覽(22)
  • Unity虛擬相機Cinemachine-實現(xiàn)相機自動移動到指定位置

    Unity虛擬相機Cinemachine-實現(xiàn)相機自動移動到指定位置

    介紹兩種方法, 第一種使用虛擬相機自帶DollyCart和DollyTrack進行設(shè)置; 第二種使用時間線Timeline和DollyTrack進行設(shè)置 1.首先添加圖中三個虛擬相機 2.點擊 DollyTrack,添加點,設(shè)置軌道 3.調(diào)整點的位置,使軌道在相機移動的起點和終點保持平滑 4.設(shè)置Dolly Cart,將軌道拖拽到Dolly

    2024年01月25日
    瀏覽(27)
  • three.js實現(xiàn)鼠標點擊控制物體移動(帶動畫效果,位置精確)

    three.js實現(xiàn)鼠標點擊控制物體移動(帶動畫效果,位置精確)

    通過查閱各種資料,最終確定解決方案,動畫效果使用gsap組件庫實現(xiàn),也可不用,代碼稍作修改即可。解決鼠標點擊坐標偏移問題,復(fù)制可直接運行。 完整代碼如下:

    2024年02月07日
    瀏覽(31)
  • [UE5]物體沿指定路徑(樣條線)循環(huán)往復(fù)的移動

    [UE5]物體沿指定路徑(樣條線)循環(huán)往復(fù)的移動

    UE5.0.3 B站:https://www.bilibili.com/video/BV17K411B7DL/ YouTube: B站:https://www.bilibili.com/video/BV1PV4y1F7F2/ YouTube: GitHub:https://github.com/wjswxc/SplineDemo 中文: 英文: Shape_NarrowCapsule 添加樣條組件 編輯樣條線 在藍圖中添加如下代碼 中文: 英文:

    2024年02月09日
    瀏覽(28)
  • Unity之用代碼移動物體(平滑移動)

    因為移動的起點和終點都是不確定,所以這里用代碼進行實現(xiàn)而不是動畫(試過動畫,但是發(fā)現(xiàn)無法成功添加clip) 物體移動常用的有兩個方法,一個是Mathf.MoveTowards,一個是Mathf.Lerp,他們都用于值的平滑過渡 Mathf.MoveTowards? ????????current:起點位置 ????????target:目

    2024年02月07日
    瀏覽(27)
  • 【虛幻引擎】UE4/UE5鼠標點擊事件實現(xiàn)物體移動

    【虛幻引擎】UE4/UE5鼠標點擊事件實現(xiàn)物體移動

    ?在UE4/UE5中,引擎有它自己的一套框架體系,虛幻就是基于這一個框架體系來實現(xiàn)的。其中就有PlayerController(玩家控制器),玩家控制器中就有對鼠標的一系列設(shè)置,包括顯示鼠標,允許點擊事件等。 ?1.創(chuàng)建PlayerController,命名為MyPlayerController 2.打開MyPlayerController,勾選參數(shù)

    2024年02月10日
    瀏覽(317)
  • 【Unity】攝像機跟隨鼠標移動以物體為中心旋轉(zhuǎn) 物體根據(jù)視線方向移動

    【Unity】攝像機跟隨鼠標移動以物體為中心旋轉(zhuǎn) 物體根據(jù)視線方向移動

    描述 實現(xiàn)攝像機根據(jù)鼠標移動跟隨物體旋轉(zhuǎn),以攝像機前物體為中心,攝像機圍繞物體旋轉(zhuǎn),并使攝像機時刻指向物體 實現(xiàn)效果 Unity 組件設(shè)置 Camera 組件設(shè)置 Body 組件設(shè)置 實現(xiàn)代碼 CameraRotateMove.cs 攝像機跟隨和旋轉(zhuǎn) move_better.cs 物體根據(jù)按鍵移動

    2024年02月08日
    瀏覽(41)
  • unity 物體移動方法

    ? ? 在Unity3D中,有多種方式可以改變物體的坐標,實現(xiàn)移動的目的,其本質(zhì)是每幀修改物體的position。 ? ? Transform 組件用于描述物體在空間中的狀態(tài),它包括 位置(position), 旋轉(zhuǎn)(rotation)和 縮放(scale)。 其實所有的移動都會導(dǎo)致position的改變,這里所說的通過Transform組件來移

    2024年02月12日
    瀏覽(23)
  • Unity中的物體移動

    局部坐標系(Transform.localPosition)是指當前物體相對于父物體的位置,會受到父物體的影響。 世界坐標系(Transform.Position)是指當前物體在世界空間坐標系中的位置,不受父物體影響。 若該物體有父類,則二者的關(guān)系為:該物體的世界坐標=該物體父類的世界坐標+該物體的局

    2024年02月03日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包