考虑一个简单的Cocos2d游戏,由1x20网格上的五个水平多米诺骨牌组成(宽度为20个正方形,每个多米诺骨牌的宽度为2个,多米诺骨牌不能重叠)。多米诺骨牌可以在网格中水平滑动。由于它们被约束到网格,因此它们的垂直位置是恒定的。
基本动作的逻辑很简单:点击和拖动会移动多米诺骨牌,直到CGRectIntersectsRect
确定何时击中另一张多米诺骨牌。在这一点上,多米诺骨牌刚刚移动到位。
“高级”运动的逻辑更加复杂。将多米诺骨牌推向另一张多米诺骨牌,只要它们是房间,就可以像连续两辆火车一样移动多米诺骨牌。显然,可以用这种方式移动三个,四个等多米诺骨牌。
虽然先进的移动代码更复杂但我认为它没有希望。我勾勒出了一些概念:
我认为这种做法是可行的。然而,我不相信这是最简单的方法,因为很多角落案件的可能性很高。例如,将三个连续的多米诺骨牌卡入到位可能需要逻辑来防止捕捉后的重叠,捕捉后的间隙等。
如何通过使用Box2d来避免某些复杂的逻辑?
我认为一个简单的物理引擎完全消除了对前多米诺骨牌,后多米诺骨牌等概念的需求。因此,我正在考虑这种方法。