【问题标题】:Cocos2d 3.0 Chipmunk with gravity: sprite position doesn't change具有重力的 Cocos2d 3.0 花栗鼠:精灵位置不会改变
【发布时间】:2014-02-25 19:53:03
【问题描述】:

将我的游戏从 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 不会随着时间而改变。

任何想法或链接与一些例子?

谢谢。

【问题讨论】:

    标签: cocos2d-iphone chipmunk


    【解决方案1】:

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

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

    CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero];
    

    之后,您可以在必要时轻松地将其转换为任何其他节点空间(可能就像您的关卡一样),使用:

    CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos];
    

    但请注意,您不应该在代码中硬编码屏幕尺寸,因为它因每个设备而异。你可以改用:

    CGSize viewSize = [[CCDirector sharedDirector] viewSize];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多