将物体加速到某个方向

本文关键字:方向 加速 | 更新日期: 2023-09-27 17:56:09

我正在尝试自己制作游戏,但遇到了困难。

我有这个对象,我需要它加速到矢量 3 点。

我尝试使用 Vector3.MoveTowards 命令,但对象以恒定的速度移动并停在目的地。

我需要做的是让物体从 0 速度加速到矢量 3 点,而不是在该点处停止,而是在它通过该点后继续沿同一方向前进。

有谁知道如何做到这一点?

谢谢!

将物体加速到某个方向

UpdateFixedUpdate方法中调用的方法中执行这些步骤。 如果您使用的是刚体,建议使用FixedUpdate

首先,您需要找到从位置到点的方向,如果不使用刚体,则需要在脚本中定义一个velocity实例变量。如果您使用的是Rigidbody ,请改用rigidbody.velocitytarget是您想要加速到的Vector3位置。

// Use rigidbody.velocity instead of velocity if using a Rigidbody
private Vector3 velocity; // Only if you are NOT using a RigidBody
Vector3 direction = (target - transform.position).normalized;

然后你需要检查我们是否已经通过了目标。此检查可确保速度保持不变

// If our velocity and the direction point in different directions 
// we have already passed the target, return
if(Vector3.Dot(velocity, direction) < 0)
    return;

完成此操作后,我们需要 加速我们的TransformRigidbody .

// If you do NOT use rigidbodies
// Perform Euler integration
velocity += (accelMagnitude * direction) * Time.deltaTime;
transform.position += velocity * Time.deltaTime;
// If you DO use rigidbodies
// Simply add a force to the rigidbody
// We scale the acceleration by the mass to cancel it out
rigidbody.AddForce(rigidbody.mass * (accelMagnitude * direction));

我建议您使用Rigidbody,因为在执行此类操作时更有意义。