我实际上正在学习SpriteBuilder
这对我来说真的是一个很棒的工具,但是我在我的场景中以编程方式包含CCNode
时遇到了麻烦。
所以,我有一个场景" Gameplay
"我的角色是从其他CCB
文件中实现的。
关于风景,我首先将我的地图和一些墙(用于场景限制)放在我的Gameplay.ccb
内(带有物理节点)。
然后,我想从外部文件中添加该场景(因为我希望能够在同一场景中的不同场景之间切换)。所以我创建了一个CCSprite
,我在里面插入了地图,然后插入了我的墙(这个新文件是map.ccbi
)。
当我在场景中实现map.ccbi时,会显示地图,但是墙看起来很远(角色和墙之间没有碰撞)。
地图在我的Gameplay
场景的物理节点内实现。
这是我实现地图的代码部分:
- (void)didLoadFromCCB {
self.userInteractionEnabled = TRUE;
// Set the class as delegate for collision
_physicWorld.collisionDelegate = self;
_hero.physicsBody.collisionType = @"hero";
// Set up the map
CCNode *map = [CCBReader load:@"Map/TestIsland"];
// position the map
map.position = ccpAdd(_physicWorld.position, ccp(0.5, 0.5));
// add the map to the world
[_physicWorld addChild:map z:-2];
}
我的地图是通过课程实现的:
@implementation TestIsland
- (id)init {
self = [super init];
if (self) {
CCLOG(@"Map loaded");
}
return self;
}
@end
答案 0 :(得分:0)
此问题的关键字可能应为sub-folder
(或“tree
”)。
Sprite构建器在导入节点时实际上不支持joint
(子文件夹到CCNode
)。
因此,面对此类问题时,其中一个解决方案是改变您CCNode
的方式。
在这种情况下,通过改变它来解决它:
( LAYER1 >>> LAYER2 >>> LAYER3 >>> ........)
CCNode >>> CCSprite + CCPhysicNode >>> CCNode(墙)+ CCNode(障碍物)+ ....
对此:
CCNode >>> CCSprite + CCNode(墙)+ CCNode(障碍物)+ ....
感谢@Tibor警告我实施情况良好(它让我觉得麻烦应该在SB的界面中),并为我提供调试工作的好建议。