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()類似。