【发布时间】:2014-07-23 16:51:23
【问题描述】:
我正在编写一个 Cocos2d V3 花栗鼠游戏,其中涉及加载 ccbfile - 一个节点 - 并初始化其名为 redLight 的类。然后,我将具有一定数量子级的 ccbfile 添加到总体级别节点,创建一个红灯数组,然后将它们作为自身的子级删除,并将它们添加为总体级节点的子级。
当我移除一个节点并将其添加到物理体内的另一个父级时,其物理节点的位置不会改变
我需要这样做是为了让 redLight 实例知道它的子节点,但是将它们添加到它的父节点,这样以后的任何位置计算都不需要涉及转换子节点在其父节点 (redLight) 中的位置到它在总体级别节点中的位置。
我面临的问题是,当我执行以下代码时,在调试绘制下,灯光的位置被转换为总体级别节点,但物理体没有。角色应该与物理体发生碰撞,然后执行一个动作,但由于物理体不会改变它们的位置,所以不会发生任何有用的事情。 这是我的代码: for (int i = 0; i
lightSource *switchLight = [redLights objectAtIndex:i];
CGPoint diffPos = ccpAdd(switchLight.position, self.position);
[self removeChild:switchLight cleanup:NO];
switchLight.physicsBody = nil;
switchLight.position = diffPos;
//switchLight.physicsBody.absolutePosition = switchLight.position;
switchLight.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:[switchLight radius] andCenter:switchLight.position];
switchLight.physicsBody.type = CCPhysicsBodyTypeStatic;
[[[gameData sharedData].GamePlayNode level] addChild:switchLight];
switchLight.physicsBody.collisionType = @"redLight";
//switchLight.physicsBody.absolutePosition = switchLight.position;
}
我将不胜感激。
当然,临近发售日,我会彻底更新画面,让用户体验更出色,互动性更强,但现在,我专注于核心玩法
【问题讨论】:
-
你需要把相关代码贴出来,否则没人知道你是不是做错了。还要提到使用的 cocos2d 的版本。
-
谢谢。我以为我有。非常感谢您的提醒
标签: objective-c cocos2d-iphone game-physics children spritebuilder