Box2D 物理演算を使用した Cocos2D ゲームがあります。私の GameScene.mm では、特定のスケールにズームする方法に取り組んでいます。
-(void) zoomToScale:(float)zoom withDuration:(ccTime)duration
{
id action = [CCScaleTo actionWithDuration:duration scale:zoom];
[scrollNode runAction:action];
currentZoomLevel = zoom;
}
私が抱えている問題は、(シーンの update() メソッドで使用される) currentZoomLevel がすぐにズームに設定され、アニメーションに従って徐々に調整されないことです。したがって、アニメーションの進行中は currentZoomLevel 変数が完全に間違っています。
currentZoomLevel 変数をアニメーションの進行状況と一致させる方法を見つけようとしています。CCAction API Reference によると、CCAction の update メソッドは、アニメーションの進行状況に基づいて 0 と 1 の間の ccTime を取ります (0 は開始したばかり、1 は終了したばかりです)。
アクションの外部からこの ccTime にアクセスするにはどうすればよいですか? シーンの更新メソッドに次のようなものを入れたい:
if(animating)
{
float progress = [action getProgress]; // How do I do this?
// Do math to update currentZoomLevel based on progress
}
ここで明らかな何かが欠けていますか、それとも CCScaleTo をサブクラス化する必要がありますか?