扭矩和加速度曲线?
Torque and acceleration curve?
我想对我的车轮进行更多的加速控制,它只是一个增加扭矩的圆柱体。
wheel.AddTorque(wheel.transform.up * throttle);
我真正想要的是让它加速非常快,但在给定速度下,加速度应该很快下降。就像开始时非常陡峭的曲线。有什么方法可以使用基本的 .Addtorque
?
来影响它吗?
目前,我的车轮正在快速加速到最大速度。向它添加阻力会减慢它的速度,但我无法对其进行所需的控制。
你直接影响 rigidbody
的 angularVelocity
属性。正如您可以影响 velocity
属性 而不是使用 .AddForce
方法。
试试这个伪代码
public float topSpeed;
public float decelRate;
protected bool slowDown = false;
public void Update()
{
float speed = wheel.angularVelocity.magnitude;
if (speed >= topSpeed) slowDown = true;
if (slowDown)
{
speed -= decelRate * Time.deltaTime;
wheel.angularVelocity = wheel.angularVelocity.normalized * speed;
}
}
请记住,由于内部有平方根函数,magnitude
调用很昂贵,但在这种情况下我没有看到其他解决方法,所以你应该没问题。此外,我没有在一个重要的设定方向上减慢它的速度,因为这样无论它向哪个方向旋转,或者它的方向如何,它都会减速。
我想对我的车轮进行更多的加速控制,它只是一个增加扭矩的圆柱体。
wheel.AddTorque(wheel.transform.up * throttle);
我真正想要的是让它加速非常快,但在给定速度下,加速度应该很快下降。就像开始时非常陡峭的曲线。有什么方法可以使用基本的 .Addtorque
?
目前,我的车轮正在快速加速到最大速度。向它添加阻力会减慢它的速度,但我无法对其进行所需的控制。
你直接影响 rigidbody
的 angularVelocity
属性。正如您可以影响 velocity
属性 而不是使用 .AddForce
方法。
试试这个伪代码
public float topSpeed;
public float decelRate;
protected bool slowDown = false;
public void Update()
{
float speed = wheel.angularVelocity.magnitude;
if (speed >= topSpeed) slowDown = true;
if (slowDown)
{
speed -= decelRate * Time.deltaTime;
wheel.angularVelocity = wheel.angularVelocity.normalized * speed;
}
}
请记住,由于内部有平方根函数,magnitude
调用很昂贵,但在这种情况下我没有看到其他解决方法,所以你应该没问题。此外,我没有在一个重要的设定方向上减慢它的速度,因为这样无论它向哪个方向旋转,或者它的方向如何,它都会减速。