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
}
}
-
在实际编程中,我们不希望进行 hard code,不希望把代码写死了
-
比如移动,我们希望通过键盘输入去控制,而不是让一个物体一直往一个方向移动
-
查看 Edit——Project Settings——Input Manager——Axes
-
查看 Horizontal 和 Vertical 两个标签下面
-
可以看到 a 和 d 按键分别对应着 Horizontal 的 Positive 和 Negative,即向右和向左
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
}
}