2014-05-03 33 views
0

我實際上學習SpriteBuilder這對我來說真的是一個很好的工具,但我面臨着在我的場景中包含CCNode(編程方式)的麻煩。插入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

似乎你一切正常。嘗試調試物理,看看有什麼有什麼,沒有一個物理機構,從我可以告訴這是一個簡單的我忘了發佈問題或忘記設置物理機構問題。你可以通過設置physicsNode.debugDraw = YES來做到這一點 –

回答

0

這個麻煩的關鍵字可能應該sub-folder(或「tree」)。

在導入節點時,雪碧構建器實際上不支持joint(子文件夾爲CCNode)。

因此面臨這樣的問題時,解決方案之一是改變你的方式,你做你的CCNode

在這種情況下,它已經解決了通過改變這樣的:

LAYER1>>>LAYER2>>>LAYER3> >> ........)

CCNode >>> CCSprite + CCPhysicNode >>> CCNode(牆)+ CCNode(障礙)+ ....

向該:

CCNode >>> CCSprite + CCNode(wall)+ CCNode(Obstacle)+ ....

感謝@Tibor給我的警告,說明實現是好的(它讓我覺得麻煩應該在SB的界面中)並且給我調試我的工作的好技巧。