仅检测 box2d 和 cocos2dx 中对象顶部的碰撞

detect collision only on top of the object in box2d & cocos2dx

我正在使用 cocos2d-x 和 box2d 创建弹跳球之类的游戏。我有不同的对象,如矩形、正方形等。我能够检测到碰撞,但我只想检测对象顶部的碰撞。我想要的是,当球在物体的顶部时,我只想跳球。

但是,当球在剩余的一侧(底部或左侧或右侧)发生碰撞时,我不想跳球。

在 touchbegan 中,我对弹跳球使用了以下代码。所以每次触摸它都会在与剩余边碰撞时跳跃。

if(_ball->boundingBox().intersectsRect(rect->boundingBox()))
{
b2Vec2 force = b2Vec2(0, 550);
_body->ApplyLinearImpulse(force, _body->GetPosition());
}

有什么建议吗?

以下步骤可以解决您的问题-

1) CCRect projectileRect = CCRect(float x, float y, float width, float height);
 if(_ball->boundingBox().intersectsRect(projectileRect))  
{

b2Vec2 force = b2Vec2(0, 550);

_body->ApplyLinearImpulse(force, _body->GetPosition());

 }

2) - Make body of an object and then check their collision.

我从下面 link.

得到了我的问题的解决方案

http://www.raywenderlich.com/28606/how-to-create-a-breakout-game-with-box2d-and-cocos2d-2-x-tutorial-part-2