読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】CCRepeatForeverで大ハマり。CCRepeatを使うべし

cocos2d

ボスキャラの動きのパターンを実装しているところで大ハマりしました。
画面外からズズーンと現れ、あとは弾を撃ちながら左右に行ったり来たりするという動きなのですが、これを、CCSequenceとCCRepeatForeverの組み合わせで実装しました。sequenceLRLというのが左右に行ったり来たりする動きで、moveDownというのが画面の上から出現する動きになっています。

    id repeat = [CCRepeatForever actionWithAction:sequenceLRL];
    id sequence = [CCSequence actions: moveDown, repeat, nil];

しかし、実行するとこんなエラーが出てクラッシュ!

2013-05-05 11:54:12.076 BeeCluster[6908:c07] -[CCRepeatForever duration]: unrecognized selector sent to instance 0x134490f0
2013-05-05 11:54:12.077 BeeCluster[6908:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CCRepeatForever duration]: unrecognized selector sent to instance 0x134490f0'

原因を探って行くと、CCSequenceの中でCCRepeatForeverを使っているのがダメだという事がわかりました。
で、こちらのサイトでCCRepeatForeverではなくCCRepeatを最大繰り返し回数で使えば実質的に同じことができるとの情報をゲット。コードを次のように修正すると無事にボスキャラが登場し、左右に動き出しました!

    id repeat = [CCRepeat actionWithAction:sequenceLRL times:UINT_MAX];
    id sequence = [CCSequence actions: moveDown, repeat, nil];