0

我可能想多了,我会提前解决这个问题。但是我似乎找不到一个简单的碰撞方法的好例子,它可以在实体遇到某物时改变它的速度。最初想到的是有 3 个系统,它们按顺序运行:

  1. 运动系统(根据其速度组件更新实体的位置组件)
  2. InputSystem(根据鼠标/键盘的输入更新实体的速度组件)
  3. CollisionSystem(根据实体是否与另一个实体相交来更改实体的速度分量)

但是这里不是有一个catch-22吗?如果我已经与另一个实体相撞,现在我无法逃脱,因为碰撞系统一直在扼杀我的速度。还是我需要让碰撞系统了解速度方向?

4

2 回答 2

0

我认为这将取决于碰撞的弹性,看看这个:Elastic Collision Reponse in a Game

也许这篇文章也可以帮助你:https ://gamedev.stackexchange.com/ 。

于 2012-12-16T15:46:01.583 回答
0

一个简单的碰撞系统需要知道您的对象进入的角度并将其发送到相反的方向。这意味着将速度矢量旋转 180°,例如从 0,1 到 0,-1。为避免再次碰撞,您需要确保它在下一个刻度之前“跳出”碰撞范围,以便将新速度应用于对象的位置(p2 = p1*velocity*tick)。

于 2013-01-20T14:26:42.573 回答