一、Unity自带的移动方式
void Update ()
{
float ho = Input.GetAxis("Horizontal");
float ve = Input.GetAxis("Vertical");
float jump = Input.GetAxis("Jump");
Vector3 player = new Vector3(ho,jump, ve);
transform.Translate(player * 30.0f * Time.deltaTime);
}
二、常规方法
//Input 四个方向
void Update ()
{
//位移
if (Input.GetKey(KeyCode.W))
{
this.transform.Translate(0, 0, 30.0f * Time.deltaTime, Space.Self);
}
if (Input.GetKey(KeyCode.S))
{
this.transform.Translate(0, 0, -30.0f * Time.deltaTime, Space.Self);
}
if (Input.GetKey(KeyCode.A))
{
this.transform.Translate(10f * Time.deltaTime, 0, 0, Space.Self);
}
if (Input.GetKey(KeyCode.D))
{
this.transform.Translate(-10f * Time.deltaTime, 0, 0, Space.Self);
}
//旋转
if (Input.GetKey(KeyCode.E))
{
this.transform.Rotate(0, 10f * Time.deltaTime, 0, Space.Self);
}
if (Input.GetKey(KeyCode.Q))
{
this.transform.Rotate(0, -10f * Time.deltaTime, 0, Space.Self);
}
}
三、通过刚体控制物体移动(必须添加刚体)
public float moveSpeed = 10f;
// Update is called once per frame
void Update () {
//通过刚体控制物体移动,需要添加刚体
Vector3 moveForward = Vector3.zero;
if (Input.GetKey(KeyCode.W))
{
moveForward.z += 1;
}
if (Input.GetKey(KeyCode.S))
{
moveForward.z += -1;
}
if (Input.GetKey(KeyCode.A))
{
moveForward.x += -1;
}
if (Input.GetKey(KeyCode.D))
{
moveForward.x += 1;
}
GetComponent<Rigidbody>().MovePosition(Quaternion.LookRotation
(transform.forward) * moveForward * moveSpeed * Time.fixedDeltaTime
+transform.position);
}