だから私の考えは、敵を凍らせる特別な弾丸を持っていて、しばらくすると敵は自分自身を凍らせず、彼らの行動/アニメーションを続けることです. これが私がやったことの簡単なバージョンです:
-(void)update:(ccTime)dt
{
CCSprite *enemySprite;
CCARRAY_FOREACH(enemies, enemySprite)
{
if (CGRectIntersectsRect(_bullet.boundingBox, enemySprite.boundingBox))
{
_bullet.visible = NO;
[enemySprite pauseSchedulerAndActions];
enemySprite.pausingDuration = CACurrentMediaTime() +5;
}
if (CACurrentMediaTime() > enemySprite.pausingDuration)
[enemySprite resumeSchedulerAndActions];
}
}
さて、私が遭遇したと思う問題は、enemySprite がここでスケジューラの更新を停止したことです。そのため、次に更新メソッドが呼び出されたときに、一時停止されたenemySprite は更新されません! これを説明するより良い方法を知っていればよかったのですが、専門のプログラマーであれば、このコードの何が問題なのかすぐにわかると思います。コードを改善するための提案を手伝ってください。または、アイデアだけでもいただければ幸いです。お時間をいただきありがとうございます。