private Rigidbody rb;
private float moveSpeed = 10;
private float turnSpeed = 100;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
Vector3 pos = GetTargetPos(v);
Quaternion rot = GetTargetRot(h);
Move(pos);
Turn(rot);
}
private Vector3 GetTargetPos(float v)
{
Vector3 delta = transform.forward * v * moveSpeed * Time.deltaTime;
Vector3 pos = rb.position + delta;
return pos;
}
private void Move(Vector3 pos)
{
rb.MovePosition(pos);
}
private Quaternion GetTargetRot(float h)
{
Quaternion delta = Quaternion.Euler(0, h * turnSpeed * Time.deltaTime, 0);
Quaternion rot = rb.rotation * delta;
return rot;
}
private void Turn(Quaternion rot)
{
rb.MoveRotation(rot);
}
浙公网安备 33010602011771号