cocos2dには、CCMoveToやCCJumpToなどオブジェクトを移動させる時に利用すると便利なクラスが揃っています。 もちろん、これはcocos2dxでも利用できます。
通常はupdate(ループ)内で、オブジェクトのPositionを変更して移動をさせるのですが、これらのCCActionクラスを使えば、手軽に移動させることができます。
[c]
CCMoveTo *move = CCMoveTo::create(1.0f, ccp(100,200));
CCJumpTo *jump = CCJumpTo::create(1.0f, ccp(100,200),200,1);
[/c]
衝突判定はどうなるのか
これは、今まで試していなかったのが悪いのですが、勝手な思い込みで、CCActionとupdate(ループ)の処理は別々のモノだと思っていました。 ですので、何か衝突判定をしたい場合は、CCActionクラスを使っていなかったのです。
それを、最近試してみました。
CCAction中でも衝突判定は有効
結果として、CCAction中でも、オブジェクトのCCRectを取得した衝突判定は有効でした。 特に、CCJumpは、Update(ループ)で表現するのはとてもむずかしいので、ジャンプ中に何かに当たるなど、といったアクションが簡単にできそうです。
注意点
もちろんですが、衝突判定が確認された場合、CCActionを止めなければいけません。 CCMoveやCCJumpなどは、オブジェクトにあたっても進み続けます。 衝突判定を確認した際の反応をうまく調整する必要がありますね。