2012-12-16 69 views
0

我可能在想這些,我會在事先避開它。但我似乎無法找到一個簡單的碰撞方法的一個很好的例子,它可以處理一個實體在運行時變化的速度。想到什麼最初具有3個系統中,爲了運行:處理組件實體系統方法中的碰撞

  1. MovementSystem(基於它的速度分量,更新實體的位置成分)
  2. InputSystem(更新實體的速度分量基於從鼠標/輸入鍵盤)
  3. CollisionSystem(改變一個實體的速度分量根據是否與另一個實體相交)

但是是不是有一個catch-22嗎?如果我已經與另一個實體發生碰撞,現在我無法逃脫,因爲碰撞系統一直在阻止我的速度。或者我需要讓碰撞系統瞭解速度的方向嗎?

回答

0

一個簡單的碰撞系統需要知道你的物體進入的角度並將它發送到相反的方向。這意味着將速度矢量旋轉180°,例如從0,1到0,-1。爲了避免再次碰撞,您需要確保它在下一次打勾前「跳躍」超出碰撞範圍,以便將新速度應用到物體的位置(p2 = p1 * velocity * tick)。