2014-05-13 45 views
-1

我有一個代碼是這樣的:在didBeginContact中添加新的孩子,但是位置更改爲零?

eggSprite *egg = [[eggSprite alloc]init]; 
    egg.position = CGPointMake(100, 100); 
    [self addChild:egg]; 

如果我把這個在我的更新邏輯,一切都很好,但如果我把它放在didBeginContact:方法,這是很奇怪的,這將增加這個孩子,但位置將設置爲(0,0),是我不能在didBeginContact:方法中添加節點?或者我做錯了什麼?

- (void)didBeginContact:(SKPhysicsContact *)contact 
{ 

eggSprite *egg = [[eggSprite alloc]init]; 
egg.position = CGPointMake(100, 100); 

[self addChild:egg];    // <---- after this , the egg's position is change to (0,0) outside this block 
} 
+0

當兩個SKPhysicsBody實例相互碰撞並用於實現碰撞檢測時,會調用didBeginContact方法。我認爲你要找的是-touchesBegan:方法。 – ZeMoon

+0

是的,我知道。但我的邏輯是,當碰撞時,然後做一些創建節點並添加到場景中,而不僅僅是觸摸添加。 – user1644055

+0

所以問題是,-didBeginContact方法沒有被調用? – ZeMoon

回答

0

didBeginContact:中添加新節點是做錯的地方。請在didBeginContact:期間將任何新節點添加到MutableArray中,然後將它們添加到週期的update:部分中。

相關問題