cocos2d-iphone - 为 cocos2d/box2d 游戏添加一个 'warp' 功能

标签 cocos2d-iphone box2d collision-detection

我无法在 cocos2d/box2d 游戏中正确使用“变形”功能。

我的主 sprite 有两个项目要与之碰撞 - 如果 sprite 碰撞/进入一个,然后它退出另一个 - 就像扭曲或传送功能。

我遇到的问题是,如果我的 Sprite 与“A”发生碰撞,我会将它的位置移动到“B”并且它应该退出“B”并继续以与“A”之前相同的方向和速度前进"碰撞。

但是一旦 Sprite 击中“B”,它就被视为与“B”发生碰撞并跳回“A”!

因此,如果我的 sprite 遇到任何一个扭曲功能,它最终会陷入无限循环,不断地从 A 跳到 B,然后再跳回来!!

我已经尝试了很多临时修复,比如在位置上添加,例如,(x+10),以便它在退出 B 时清除“B”碰撞,但这是一个困惑的解决方案。

希望有人能有另一个好主意!!

最佳答案

使用 BOOL 来跟踪您的碰撞状态如何?

所以当你的物体与A碰撞时,设置

_isColliding = YES 

一旦你没有碰撞,设置

_isColliding = NO

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

关于cocos2d-iphone - 为 cocos2d/box2d 游戏添加一个 'warp' 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009600/

相关文章:

iphone - 如何从单 View 应用程序启动 cocos2D 游戏

objective-c - iOS Cocos2d Sprite 移动问题

ios - Box2D 和 Xcode

javascript - 单击 Canvas 中的给定元素

Swift/SpriteKit - 碰撞和对象

c++ - 具有 FPS 校正功能的 cocos2d 回放系统

iphone - 更改 Cocos2d 中绘制方法的 z 顺序?

java - Libgdx:如何从另一个输入处理类访问/修改 Box2D World?

c++ - Box2d SetLinearVelocity 奇怪的问题

algorithm - circle-AABB 包含测试