Cocos2d x 仅在box2d&;中的对象顶部检测碰撞;cocos2dx

Cocos2d x 仅在box2d&;中的对象顶部检测碰撞;cocos2dx,cocos2d-x,box2d,collision-detection,game-physics,Cocos2d X,Box2d,Collision Detection,Game Physics,我正在使用cocos2d-x和box2d创建一个类似弹跳球的游戏。我有不同的对象,如矩形、正方形等。。我能够检测碰撞,但我只想检测对象顶部的碰撞。我想要的是,当球在物体的顶部时,我只想跳球 但是,当球在另一侧(底部、左侧或右侧)碰撞时,我不想跳球 在TouchStart中,我使用以下代码来弹起球。所以,当它与另一侧碰撞时,每一次触碰都是跳跃 if(_ball->boundingBox().intersectsRect(rect->boundingBox())) { b2Vec2 fo

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

但是,当球在另一侧(底部、左侧或右侧)碰撞时,我不想跳球

在TouchStart中,我使用以下代码来弹起球。所以,当它与另一侧碰撞时,每一次触碰都是跳跃

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.

我从下面的链接中找到了问题的答案


比较两个身体的位置。也许是吧?