2010-10-03 204 views
0

我使用以下來交換2精靈的位置。cocos2d:交換雪碧

CCSprite *sprite1 = (CCSprite*)[self getChildByTag:tagOfFirstSprite]; 
    CCSprite *sprite2 = (CCSprite*)[self getChildByTag:tagOfSecondSprite]; 

    CGPoint SpritePosition1 = [sprite1 position]; 
    CGPoint SpritePosition2 = [sprite2 position]; 



    [sprite1 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition2.x, SpritePosition2.y)]]; 
    [sprite2 runAction:[CCMoveTo actionWithDuration:1.0 position:ccp(SpritePosition1.x, SpritePosition1.y)]]; 

這些是box2d body.But它不工作.......任何想法??

回答

2

我假設您使用的Box2D樣本模板實現了由調度程序不斷調用的「tick()」函數。該函數調用world-> step()函數,並更新box2D主體的位置,然後根據box2D主體的新位置更新精靈的位置。 當你只是調用runAction時,它不會影響Box2D主體的位置,所以每次調用tick()函數時,都會根據box2D主體的位置設置你的精靈的位置。 現在,即使你的runAction正在移動你的精靈,當tick()函數被調用時,它會在每秒鐘重複幾次之後重置。 我希望你能理解。

+0

請閱讀此主題以更好地理解此問題,http://www.cocos2d-iphone.org/forum/topic/6971 – Tayyab 2011-03-07 12:03:26

+0

yes..雖然我已經發現它...但非常非常感謝您的美麗的說明.....我想你明確... – Rony 2011-03-08 04:05:36