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,即向右和向左