2011-08-30 103 views
0

我要制作一个类似于“Doodle Jump”的函数:球(dynamicbody)在与平台(staticbody)相撞后跳转。box2d,在与b2_dynamicbody碰撞时破坏b2_staticbody导致隧道效应

下面是如何实现此: 1.定义自己ContactListener:定义一个接触阵列,其插入体同时BeginContact,擦除体而EndContact 2自scheduleupdate]遍历触点阵列,如果接触的一个主体是一个平台(staticbody),摧毁它。

问题是球在与平台和平台发生碰撞后不会跳跃。 球只会穿过前者的静态物体。

任何人都可以帮忙吗?

+0

它还挺很难理解你在做什么试图去做。平台在被击中时应该消失,对吧?所以球和平台不再碰撞似乎很自然。 – iforce2d

回答

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);