具有重力的Cocos2d 3.0花栗鼠:精灵位置不会改变

时间:2014-02-25 19:53:04

标签: cocos2d-iphone chipmunk

将我的游戏从Cocos2d v2移植到v3我不知道精灵何时离开屏幕。

在v2中我的解决方案是:

-(void) update:(ccTime) delta
{
   // Should use a fixed size step based on the animation interval.
   int steps = 2;
   CGFloat dt = [[CCDirector sharedDirector] animationInterval]/(CGFloat)steps;

   for(int i=0; i<steps; i++){
       cpSpaceStep(space_, dt);
   }

   if (mySprite.getPhysicsBody->p.y > 500)
       [mySprite resetPosition];
}

现在使用Cocos2d v3 mySprite.physicsNode.position不会随着时间的推移而改变。

有任何想法或链接的例子吗?

感谢。

1 个答案:

答案 0 :(得分:0)

physicsNode.position不随时间变化,因为它使用其父精灵坐标空间,而不是全局坐标空间。

考虑到Anchor Point,您可以使用以下方法获取任何节点的全局位置:

CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero];

之后,您可以根据需要轻松地将其转换为任何其他节点空间(例如您的级别):

CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos];

但请注意,不应对代码的屏幕大小进行硬编码,因为每个设备的屏幕尺寸都不同。您可以改为使用:

CGSize viewSize = [[CCDirector sharedDirector] viewSize];