我正在尝试使用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];
}
所以我的问题是,为什么抽出玩家精灵的位置?
答案 0 :(得分:0)
物理世界不会自动与节点一起滚动。如果通过改变包含“世界对象”的节点的位置来改变绘制内容的位置,那么你就可以直观地从物理世界中的位置偏移所有内容。
有一种方法可以滚动世界,就好像你有一个摄像机在世界上平移,物理世界和节点(视觉)的相对坐标不受影响。它在Sprite Kit programming guide中解释,同样的设置也适用于cocos2d。