一、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);
}

这篇博客介绍了Unity3D中三种不同的对象移动控制方式:一是使用内置的Input.GetAxis方法实现四轴控制;二是直接通过键盘按键控制位移和旋转;三是利用刚体组件进行移动。每种方法都结合了Time.deltaTime以实现平滑移动,并提供了前进、后退、左右移动及旋转的功能。
1814

被折叠的 条评论
为什么被折叠?



