处理组件实体系统方法中的冲突

时间:2012-12-16 15:28:46

标签: components entity system

我可能过度思考了这个问题,我会先把它弄清楚。但我似乎无法找到一个简单的碰撞方法的好例子,它可以处理当实体运行时改变实体的速度。最初想到的是有3个系统,按顺序运行:

  1. MovementSystem(根据其速度组件更新实体的位置组件)
  2. InputSystem(根据鼠标/键盘输入更新实体的速度组件)
  3. CollisionSystem(根据实体的速度分量是否与另一个实体相交来改变它)
  4. 但是这里没有捕获22?如果我已经与另一个实体相撞,现在我无法逃脱,因为碰撞系统一直在扼杀我的速度。或者我是否需要让碰撞系统了解速度的方向?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

一个简单的碰撞系统需要知道物体进入的角度并以相反的方向发出。这意味着将速度矢量旋转180°,例如从0到0,-1。为了避免重新碰撞,你需要确保它在下一个滴答之前“跳”到碰撞范围之外,这样你就可以将新的速度应用到物体的位置(p2 = p1 * velocity * tick)。