仅检测 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.
得到了我的问题的解决方案
我正在使用 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.
得到了我的问题的解决方案