Unity的C#編程教程_3_簡單移動控制
Simple Movement
-
創建一個 player 對象,比如一個 3D Cube
-
在對象上掛載腳本 PlayerMovement
-
這裡我們將使用 transform.Translate() 方法
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { [SerializeField] private float _speed; // 雖然是 private,但是我們使用[SerializeField]讓其在 Inspector 可以編輯 // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { // transform.Translate(Vector3.right); // 讓對象一直往右移動,默認是 1 米/幀的速度,每秒 60 幀,那就是60米/秒 // transform.Translate(Vector3.right * Time.deltaTime); // 乘上一個時間修正,就可以移動 1 米/秒了 transform.Translate(Vector3.right * _speed * Time.deltaTime ); // 指定速度移動 // 這裡 Vector3.right = new Vector3(1,0,0) // 所以速度設定為 5 的話: // new Vector3(1,0,0) * 5 * 真實時間修正 // (-1,0,0) 代表 left } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { [SerializeField] private float _speed; // 雖然是 private,但是我們使用[SerializeField]讓其在 Inspector 可以編輯 // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { float horizontalIput = Input.GetAxis("Horizontal"); // 取得水平方向上的按鍵輸入 a為 0~-1,d為0~1,浮點數 transform.Translate(new Vector3(horizontalIput,0,0) * _speed * Time.deltaTime ); // 得到的基礎速度是水平方向 -1~1 } }
-
在實際編程中,我們不希望進行 hard code,不希望把代碼寫死了
-
比如移動,我們希望通過鍵盤輸入去控制,而不是讓一個物體一直往一個方向移動
-
查看 Edit——Project Settings——Input Manager——Axes
-
查看 Horizontal 和 Vertical 兩個標籤下面
-
可以看到 a 和 d 按鍵分別對應着 Horizontal 的 Positive 和 Negative,即向右和向左