我在我的游戏中使用Cocos2d v3和Chipmunk进行物理训练。我的游戏中有一个球落在一个带有陷阱门的平台上。平台和门是静止物体,因此它们不会从球速度或重力下降。玩家可以控制打开活板门,因此如果将球放在平台或门上,它最终会入睡。一旦球被设置为睡眠状态,当活门被打开时,它将无法识别物体不再在球下,因此球不会移动。
现在我有一个每0.2秒调用一次的功能来检查球。如果它处于睡眠状态,则将其速度设置为(0,0),这会将球唤醒。唯一的问题是,这种方式可以将游戏的帧速率从60降低到40-50。 (我可以同时在关卡中放置多达30个不同的球,这会减慢它的速度)
当活板门打开时,是否有一种简单的方法可以防止球入睡或将其唤醒?或者有没有办法让我的活板门保持动态而不是静止,但是当球碰撞时它们不会移动。
答案 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];
}