3d物體移動–變換組件
移動物體的位置基本上可以分爲三個大類,
第一種是直接賦值:
transform.position += Vector3.left * Time.deltaTime;
//transform.position += -transform.right * Time.deltaTime;
要麼是vector3的靜態屬性,要麼是tranform的屬性,vector3更加齊全,包括左右,上下,前後。
而transform的屬性只有右,上,前,獲取對應的反方向要加負號。
另外,如果物體自身的軸與世界座標軸不一致。那麼vector3.left 的移動是以世界座標爲準,而-transform.right是以自身軸系爲準。
適用於:已知移動方向和速度的時候;
第二種調用Translate方法,該方法默認是以自身軸系爲準:
transform.Translate(Vector3.left * Time.deltaTime);
①和前面的直接賦值沒區別,效果一樣,唯一的區別在於Translate還可以指定以哪個座標系爲基準。
默認的是 Space.Self,如果要以世界座標爲準,則改爲Space.World
②重載形式,直接提供浮點數
transform.Translate(-0.01f,0,0);
③重載形式,相對於某個物體的軸系移動
//相對於主攝像機的軸系位置移動
transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);
Translate方法可以完全替代+=賦值
第三種是 Vector3.MoveTowards方法
適用於知道起始點,終點,速度的時候。
Vector3 target;
float speed;
private void Start()
{
target = new Vector3(10, 10, 10);
speed = 10 ;
}
void Update()
{
// 起點,終點,速度
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
}
旋轉
同理,旋轉物體也是可以用
transform.Rotate(Vector3.right * Time.deltaTime);
它以自身的軸爲基準,含義是以自身x軸(紅色軸)爲軸心向裏旋轉。
如果是Vector3.left,以自身x軸(紅色軸)爲軸心向外旋轉。
想要以世界座標軸,則添加
transform.Rotate(Vector3.right * Time.deltaTime,Space.World);