用刚体然后AddForce的方法容易让物体无限制加速
用这种办法可以限制物体运动的最大速度,虽然不太精确
方法如下:
- 给物体设置合适的摩擦力和阻力
- 通过GetComponent().velocity获取当前物体速度
- 给物体施加x/speed的力
public class PlayerMove : MonoBehaviour
{
private float speed;
void Update()
{
speed = Vector3.Magnitude(this.GetComponent<Rigidbody>().velocity);
float force; //最终力的大小
float maxPower = 20f;//功率
if (Input.GetKey(KeyCode.W))
{
if(speed == 0) force = maxPower;//防止除0
else force = maxPower / speed; //功率公式 力=功率/速度
this.GetComponent<Rigidbody>().AddForce(force * Vector3.forward);
}
}
}