0

我使用以下内容仅交换 2 个精灵的位置。

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。但它不起作用.......有什么想法吗?

4

1 回答 1

2

我假设您正在使用 Box2D 示例模板,该模板实现了调度程序连续调用的“tick()”函数。此函数调用 world->step() 函数并更新 box2D 物体的位置,然后根据 box2D 物体的新位置更新精灵的位置。当你只调用runAction时,它不会影响你的Box2D物体的位置,所以每次调用tick()函数时,你的精灵的位置都会根据box2D物体的位置来设置。现在,即使您的 runAction 正在移动您的精灵,当调用 tick() 函数时,它也会在每秒几次后重置。我希望你明白。

于 2011-03-07T11:54:36.983 回答