我正在为游戏寻找简单的停车算法。
汽车和车库的位置分别由 3 个数字定义(x, y, theta)
。其中x
和y
- 对象的中心和theta
- 对象轴和 X 轴之间的角度。
汽车运动被简化 -它是一个点(无需计算精确的轮胎运动),可以fixed speed
前后行驶或按照半径的圆圈R
转弯(转弯半径可以是固定的或灵活的 - 没关系 - 任何选项对我来说没问题),它有no inertia or acceleration
.
车库有 3 面墙,汽车不应碰触。可以使用精确的碰撞尺寸,但为简单起见,通过测量汽车和车库之间的角度以及汽车轴线和车库中心之间的距离来检查碰撞。当汽车和车库足够近(中心之间的距离小于某个常数CloseEnough
)时,由(alpha, d) < (maxAlpha, maxDistance)
由滴答声模拟的世界,我们采用当前汽车控制 -moving direction
前进或后退,turning angle
然后计算汽车的下一个位置。
该算法应产生一系列控制命令,例如[forward, left], [forward, left], [backward, straight], [forward, right]
.
如果它是迭代的并且一次产生一个命令是可以的 - 然后检查下一个滴答时发生了什么并产生另一个。它可以要求仿真引擎在给定控制命令的情况下模拟并产生新的坐标,或者使用仿真引擎尝试多种选项并选择最佳的一种。
如果它通过一系列近似的动作来做也可以,比如尝试一次 - 错过,尝试另一次 - 靠近,第三次 - 最终停车(但它应该或多或少合理,不要做几十或几百来回迭代)。