Cocos2d物理节点(调试图)未正确定位

时间:2014-01-25 20:13:33

标签: ios objective-c cocos2d-iphone game-physics

我正在尝试使用CCPhysicsNode制作一个物理世界用于游戏(物理将用于子弹碰撞检测)。物理实体的调试绘图是实际的。我相信这可能是因为CCNode是物理世界的父级,而CCNode跟随玩家精灵(游戏世界大于屏幕)。 以下是相关代码:

_controlLayer = [CCNode node];
_controlLayer.position = ccp(0, 0);

_gameLayer = [CCNode node];

[self addChild:_gameLayer];
[self addChild:_controlLayer];

_physicsWorld = [CCPhysicsNode node];
_physicsWorld.debugDraw=YES;
_physicsWorld.collisionDelegate = self;
[_gameLayer addChild:_physicsWorld];

[self setupMap];
[self setUpControls];
[self setupPlayer];

_allZombies = [[NSMutableArray alloc]init];

[_gameLayer runAction:[CCActionFollow actionWithTarget:_player worldBoundary:_map.boundingBox]];

-(void)setupPlayer {
     _player = [CCSprite spriteWithImageNamed:@"Player.png"];
     _player.position = CGPointMake(1024/2+60,768/2+60);
     _player.anchorPoint = ccp(0.5, 0.5);
    _player.physicsBody = [CCPhysicsBody bodyWithRect:_player.boundingBox cornerRadius:0];
    _player.physicsBody.elasticity = 0;
    _player.physicsBody.sensor=YES;
    _player.physicsBody.collisionGroup = @"playerGroup";
    _player.physicsBody.collisionType = @"playerCollision";
    [_player setScale:0.5];

    [_physicsWorld addChild:_player];
}

所以我的问题是,为什么抽出玩家精灵的位置?

1 个答案:

答案 0 :(得分:0)

物理世界不会自动与节点一起滚动。如果通过改变包含“世界对象”的节点的位置来改变绘制内容的位置,那么你就可以直观地从物理世界中的位置偏移所有内容。

有一种方法可以滚动世界,就好像你有一个摄像机在世界上平移,物理世界和节点(视觉)的相对坐标不受影响。它在Sprite Kit programming guide中解释,同样的设置也适用于cocos2d。