Cocos2d花栗鼠物理对象睡觉而不是醒来

时间:2014-05-12 22:09:08

标签: cocos2d-iphone chipmunk

我在我的游戏中使用Cocos2d v3和Chipmunk进行物理训练。我的游戏中有一个球落在一个带有陷阱门的平台上。平台和门是静止物体,因此它们不会从球速度或重力下降。玩家可以控制打开活板门,因此如果将球放在平台或门上,它最终会入睡。一旦球被设置为睡眠状态,当活门被打开时,它将无法识别物体不再在球下,因此球不会移动。

现在我有一个每0.2秒调用一次的功能来检查球。如果它处于睡眠状态,则将其速度设置为(0,0),这会将球唤醒。唯一的问题是,这种方式可以将游戏的帧速率从60降低到40-50。 (我可以同时在关卡中放置多达30个不同的球,这会减慢它的速度)

当活板门打开时,是否有一种简单的方法可以防止球入睡或将其唤醒?或者有没有办法让我的活板门保持动态而不是静止,但是当球碰撞时它们不会移动。

1 个答案:

答案 0 :(得分:1)

如果您需要唤醒身体,可以尝试使用activate内部使用的ChipmunkBody CCPhysicsBody方法。

我还没试过这个,只是通过查看cocos2d的代码找到了这个选项。这是一些伪代码,可能可以做到这一点:

#import "CCPhysics+ObjectiveChipmunk.h"

//Let's pretend this method is called when you open your trap door
-(void)openTrap
{

   // Get the body of your ball somehow
   CCPhysicsBody *ballBody = ... 

   // Get the body property of CCPhysicsBody, 
   // (which is only available if you import the header at the top)
   // this will return a ChipmunkBody body, which has an 
   // activate function to wake up your ball
   [ballBody.body activate];

}