Unity 小科普
老規矩,先介紹一下 Unity 的科普小知識:
- Unity是 實時3D互動內容創作和運營平臺 ,
- 包括游戲開發、美術、建筑、汽車設計、影視在內的所有創作者,借助 Unity 將創意變成現實,
- Unity 平臺提供一整套完善的軟體解決方案,可用于創作、運營和變現任何實時互動的2D和3D內容,支持平臺包括手機、平板電腦、PC、游戲主機、增強現實和虛擬現實設備,
- 也可以簡單把 Unity 理解為一個游戲引擎,可以用來專業制作游戲!
Unity小知識點學習
Unity 移動物體到指定位置的幾種方法【精選快捷使用】
在Unity中移動物體的方法有好幾種,下面是精選的幾種可直接使用的便捷方法
不管是移動3D游戲物件還是2D UI都可以使用哦!
方法一:使用Vector3自帶的API方法移動
public float Speed=5;
void Update(){
//將某個物體的本地坐標移動到(0, 0, 100)位置,速度為2
gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(0, 0, 100), Speed*Time.deltaTime());
}
上述代碼是將gameObject的本地坐標transform.localPosition,變成一個我們賦予的新坐標new Vector3(0, 0, 100),按照我們設定的一個float的速度進行移動
使用該代碼效果如下:

方法二:使用Lerp插值運算
public float Speed = 5f;
void Update()
{
gameObject.transform.localPosition = new Vector3(Mathf.Lerp(gameObject.transform.localPosition.x, 20, Speed * Time.deltaTime), Mathf.Lerp(gameObject.transform.localPosition.y, 5, Speed * Time.deltaTime),0);
}
插值運算的特點是,游戲物件移動時不是勻速的,而是變速運動,會由快而慢,最后一部分數值甚至會一直都達不到!
例如上述代碼就是將某個游戲物件 使用插值運算移動到(20,5,0)
效果如下:

方法三:使用DoTween插件移動物體
DoTween作為Unity中最常用的幾種插件之一 作用可大了去了,這里只是演示最基本的物體移動方法
首先,需要再工程中匯入DoTween插件才可以使用
1)改變世界坐標
//移動方法,第一個引數是要移動到的目標點,不是移動這個向量的距離
transform.DOMove(new Vector3(1, 1, 1), 2);
只控制x軸上的移動,其他兩個方向同理
transform.DOMoveX(1, 2);
2)改變區域坐標
//移動方法,第一個引數是要移動到的目標點,不是移動這個向量的距離
transform.DOLocalMove(new Vector3(1, 1, 1), 2);
transform.DOLocalMoveX(1, 2);
方法四:使用協程 IEnumerate
public float Speed = 5f;
private void Start()
{
StartCoroutine(MoveToPosition());
}
IEnumerator MoveToPosition()
{
while (gameObject.transform.localPosition != new Vector3(20, 5, 0))
{
gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(20, 5, 0), Speed * Time.deltaTime);
yield return 0;
}
}
這種方法其實就是第一種方法的實作,只不過使用在了協程里面,
先啟動協程,然后使用Vector3.MoveTowards,將游戲物件移動到我們指定的位置即可!
效果如下:


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328219.html
標籤:其他
上一篇:Unity中行星和恒星的旋轉——Rotate和RotateAround
下一篇:Java基本語法的常見練習題
