在cocos2d/box2d游戏中添加“warp”功能

3
我在一个cocos2d/box2d游戏中遇到了“warp”功能无法正确工作的问题。
我的主要精灵有两个物品可以碰撞 - 如果精灵与其中一个碰撞/进入,则它会从另一个物品出现,就像传送或者瞬移一样。
我的问题是,如果我的精灵与“A”碰撞,我将其位置移动到“B”,然后它应该退出“B”,并以相同的方向和速度继续前进,在与“A”碰撞之前的状态下。
但是,一旦精灵碰到“B”,它就被视为与“B”碰撞,并跳回“A”!
因此,如果我的精灵碰到任何一个传送门,它最终会陷入一个无限循环中,不断地从A跳到B再跳回A!!
我尝试了很多临时解决方法,例如添加(x+10)到位置,以便当它退出B时清除“B”碰撞,但这是一个混乱的解决方案。
希望有人能提供另一个好的想法!

只需记录下一个与B的碰撞应该被忽略的事实,如何? - iforce2d
1个回答

3
如何使用BOOL来跟踪您的碰撞状态?因此,当您的对象与A发生碰撞时,请设置
_isColliding = YES 

一旦您避免了碰撞,请设置:

_isColliding = NO

任何在 _isColliding 仍设置为 YES 的情况下发生的碰撞都将被忽略。

这就是我最终做的事情,看起来运行得还不错! - R2D2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接