CCMoveTo
アクションのチェーンとして、連続してスプライトを移動する必要があります。ただし、スプライト自体と持続時間は反復ごとに変更する必要があります。これがシングルアクションです。
id cloudAction = [CCSequence actions:
[CCMoveTo actionWithDuration:15.0 position:ccp(-spriteCloud.contentSize.width/2, windowSize.height/2)],
cloudActionComplete,
nil
];
[spriteCloud runAction:cloudAction];
15
秒、スプライト自体、開始位置、終了位置はすべて、実行するたびに変更する必要がありますCCMoveTo
。cloudActionComplete
しかし、ブロックアクションからこのアクションをどれだけ効果的に再実行できるかはわかりません。CCRepeatForever
私の行動の動的な性質のために使用できません。おそらく、そのようなタスクを達成するためのより良い方法はありますか?
アップデート:
これは私の試みです
id cloudActionComplete = [CCCallBlock actionWithBlock:^(void)
{
spriteCloud.position = ccp(windowSize.width + spriteCloud.contentSize.width/2, windowSize.height/2);
id cloudAction = [CCSequence actions:
[CCMoveTo actionWithDuration:RANDOMRANGE(2, 10) position:ccp(-spriteCloud.contentSize.width/2, windowSize.height/2)],
cloudActionComplete,
nil
];
[spriteCloud runAction:cloudAction];
}];
[spriteCloud runAction:cloudActionComplete];
一度しか機能しません。問題は完了アクションの再帰にあると思います。cloudActionComplete
はゼロです。