使对象相对于另一个对象的速度和距离减慢

时间:2017-07-11 05:35:28

标签: unity3d physics game-physics

我遇到了车辆运动,加速和减速的问题,并希望有人可以提供帮助。

我有一个移动的物体/车辆,我正在努力实现以下目标:

  1. 在一段时间内加速到最高速度
  2. 遇到静止物体时减速至停止
  3. 减速以匹配移动物体的速度
  4. 当另一个物体减速直至两个停止时减速
  5. #1 #3 正在工作,但遇到#4 的问题。

    我知道另一个物体的速度和RaycastHit物体给我的距离,但我正在努力使物体能够及时可靠地停下来。

    对于静止物体的减速很容易,因为距离保持不变,但如果另一个物体不断地加速/减速,那么保持恒定的距离并停止则证明有点困难。

    有关如何使这项工作的任何建议或指导将不胜感激?

    编辑#1:

    抱歉,忘记添加代码了。我在物体前投射了一条光线,当它撞到某物时,我用以下方法计算减速度:

    float deceleration = (_currentSpeed - targetSpeed) / brakeDistance;
    

    _currentSpeed是此对象的速度。 targetSpeed是我要匹配的另一个对象的速度,brakeDistance是此对象与另一个对象之间的距离。

    brakeDistance计算如下:

    float gapBetweenObjects = 0.5f;
    float brakeDistance = raycastHit.distance - gapBetweenObjects
    

    当另一个对象变慢时,我希望这个对象也能减速,直到两个对象停止,同时保持gapBetweenObjects

1 个答案:

答案 0 :(得分:0)

我的想法是创建一个在光线投射检测到障碍物后触发的布尔值,然后在Update函数中运行可以减速汽车的代码。

对于使用剩余距离超过指定阈值时如何减速移动物体,有一个很好的解释: http://answers.unity3d.com/questions/631915/accelleration-and-stopping.html

这足以为您提供所需的基础。然后你需要确定检测到的障碍物是否正在移动并根据它调整代码。