box2d,在与b2动态体碰撞时摧毁b2_static体导致隧道效应

时间:2011-08-30 15:47:06

标签: box2d

我要做一个像“涂鸦跳跃”这样的功能:一个球(动态体)在与平台(静体)相撞后跳跃。

以下是我如何实现这个: 1.定义自己的ContactListener:定义一个接触数组,它在BeginContact时插入体,在EndContact时擦除体 2. [self scheduleupdate]遍历联系人数组,如果一个联系人是一个平台(staticbody),则将其销毁。

问题是球在与平台发生碰撞并且平台破坏后不会跳跃。 球只会穿过前静体。

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

通常,您需要使用b2_kinematicBody来模拟平台,并设置它的LinearVelocity以使其移动。

考虑到滚动屏幕或跳球的错觉,你可以让平台移动。

要模拟反弹,您可以将恢复原状设置为接近1的值。

要销毁平台,您可以设置一个简单的contactListener:

//in the end of update: method

if (bodyASprite.tag == BALL_TAG && bodyBSprite.tag == PLAT_TAG)
    world->DestroyBody(bodyB);
else if (bodyASprite.tag == PLAT_TAG && bodyBSprite.tag == BALL_TAG)
    world->DestroyBody(bodyA);