Unity 物體移動的理解


 

Unity通過內置的Input類獲取外部輸入,具體查看:

Editor---Project Setting---Input,常見的輸入比如:Vertical、Horizontal、Fire1、Jump等;

 

物體移動:

1、物體自己移動

private Transform transform;
transform = GetComponent<Transform>();

transform.position += new Vector3(0, 0, 1);
transform.Translate(Vector3.forward);

首先定義Transform組件,再獲取組件;

1)可以改變組件的位置屬性進行移動,Vector3(0,0,1)表示物體沿z軸的正方向移動,其他類似Vector3(1,0,0)表示沿x的正方向移動;

2)使用組件的Translate()函數進行移動,函數的傳值Vector3.forward其實等價與Vector3(0,0,1),當然還有Vector3.left=Vector3(-1,0,0)等;

 

2、鍵盤控制物體移動

private Transform transform;
private float v = 0.0F; private float h = 0.0F; v = Input.GetAxis("Vertical"); h = Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward*v); transform.Translate(Vector3.left*h); transform.Translate(Vector3.forward*v*Speed*Time.deltaTime);

1)分別獲取x軸和z軸的方向

同樣定義組件和獲取組件,接下來需要獲取水平和垂直坐標,直接乘到Vector3.*向量就可以實現,值得注意的是Vector3.*獲取的只是方向;

總之是方向*坐標軸即可移動;

最后可以看到加入的移動速度和Time.daltaTime同樣改變游戲移動速度的參數,以每秒10個單位的速度前進;

2)用向量moveDir獲取x軸和z軸的方向,更加簡練

v = Input.GetAxis("Vertical");
h = Input.GetAxis("Horizontal");

Vector3 moveDir = (Vector3.forward*v) + (Vector3.right*h);
transform.Translate(moveDir.normalized*Speed * Time.deltaTime );

 

 

三、物體旋轉

其實在transform組件中除了位置外,還有一個重要的屬性,旋轉Rotate();

旋轉其實也可以分為自動旋轉和通過鍵盤輸入進行旋轉;

 

private Transform transform;
public float rotSpeed = 100.0F;

transform = GetComponent<Transform>();
transform.Rotate(Vector3.forward
* Time.deltaTime * rotSpeed* Input.GetAxis("Mouse X")); transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);

首先需要定義Transform組件,然后獲取組件,再通過函數Rotate()進行旋轉,其中的參數和位置函數Traslate()類似。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM