ZERO_BEYOND

博客园 首页 联系 订阅 管理

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

  

 
posted on 2025-03-16 11:57  ZERO_BEYOND  阅读(12)  评论(0)    收藏  举报