2014-02-25 55 views
0

将我的游戏从Cocos2d v2移植到v3我不知道什么时候精灵离开了屏幕。Cocos2d 3.0花栗鼠引力:精灵位置不变

在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不通过时间而改变。

任何想法或链接的例子?

谢谢。

回答

0

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

您可以得到任何节点的全局位置,考虑到锚点,使用这样的:

CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero]; 

之后,您可以在必要时很容易地转换到任何其他节点的空间(如你的水平,也许)使用:

CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos]; 

但要注意,你不应硬编码的屏幕大小上你的代码,因为它改变了每个设备。您可以使用:

CGSize viewSize = [[CCDirector sharedDirector] viewSize];