【发布时间】:2017-07-11 05:35:28
【问题描述】:
我在车辆移动、加速和减速方面遇到问题,希望有人能提供帮助。
我有一个移动的物体/车辆,我正在努力实现以下目标:
- 在一段时间内加速到最大速度
- 遇到静止物体时减速停止
- 减速以匹配移动物体的速度
- 在另一个物体减速时减速,直到两者都停止
我的 #1 到 #3 工作正常,但 #4 有问题。
我知道另一个物体的速度,RaycastHit 物体给了我距离,但我正在努力让物体及时可靠地停止。
对于静止的物体,减速很容易,因为距离保持不变,但如果另一个物体不断加速/减速,那么保持恒定的距离并停下来会有点困难。
任何关于如何使这项工作的建议或指导将不胜感激?
编辑#1:
抱歉,忘记添加代码了。我在物体前面投射一条射线,当它击中某物时,我计算减速:
float deceleration = (_currentSpeed - targetSpeed) / brakeDistance;
_currentSpeed 是这个物体的速度。 targetSpeed 是我想匹配的另一个物体的速度,brakeDistance 是这个物体和另一个物体之间的距离。
brakeDistance 计算为:
float gapBetweenObjects = 0.5f;
float brakeDistance = raycastHit.distance - gapBetweenObjects
当另一个物体变慢时,我希望这个物体也变慢,直到两者都停止,同时保持gapBetweenObjects。
【问题讨论】:
-
添加一些代码会很有帮助
-
这还不清楚。在您的第一个对象 (A) 与第二个对象 (B) 匹配速度后,您希望 A 与 保持恒定距离B,对吗?您希望 A 通过计算自己的减速率作为测量距离和所需距离的函数来做到这一点,对吗?
标签: unity3d physics game-physics