我遇到了车辆运动,加速和减速的问题,并希望有人可以提供帮助。
我有一个移动的物体/车辆,我正在努力实现以下目标:
我#1 #3 正在工作,但遇到#4 的问题。
我知道另一个物体的速度和RaycastHit物体给我的距离,但我正在努力使物体能够及时可靠地停下来。
对于静止物体的减速很容易,因为距离保持不变,但如果另一个物体不断地加速/减速,那么保持恒定的距离并停止则证明有点困难。
有关如何使这项工作的任何建议或指导将不胜感激?
编辑#1:
抱歉,忘记添加代码了。我在物体前投射了一条光线,当它撞到某物时,我用以下方法计算减速度:
float deceleration = (_currentSpeed - targetSpeed) / brakeDistance;
_currentSpeed
是此对象的速度。 targetSpeed
是我要匹配的另一个对象的速度,brakeDistance
是此对象与另一个对象之间的距离。
brakeDistance
计算如下:
float gapBetweenObjects = 0.5f;
float brakeDistance = raycastHit.distance - gapBetweenObjects
当另一个对象变慢时,我希望这个对象也能减速,直到两个对象停止,同时保持gapBetweenObjects
。
答案 0 :(得分:0)
我的想法是创建一个在光线投射检测到障碍物后触发的布尔值,然后在Update
函数中运行可以减速汽车的代码。
对于使用剩余距离超过指定阈值时如何减速移动物体,有一个很好的解释: http://answers.unity3d.com/questions/631915/accelleration-and-stopping.html
这足以为您提供所需的基础。然后你需要确定检测到的障碍物是否正在移动并根据它调整代码。