【cocos2d】慣性スクロールの実装。アプリつくってみっか!趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。この広告は、90日以上更新していないブログに表示しています。2013-09-09【cocos2d】慣性スクロールの実装。背景をヌルヌル動かすcocos2dタッチ操作に合わせて気持ちよく背景を慣性スクロールさせてみます。実際にはタッチ操作で自機の座標を動かし、同時に背景の座標をを逆方向に動かす事でキャラクターを画面の中心に保ったまま背景をスクロールさせています。キャラクターのクラスCatクラスの実装です。画面上は仮にハチを入れていますが、いずれはネコになる予定です。y);}@endTouchLayerというのは自作クラスでタッチ情報を集中して処理するためのクラスおよびプロトコルです。CCTouchesMove発生時にTouchNotificationMoveが呼ばれるようになっています。TouchNotificationUpというメソッドもありますが、Catクラスでは実装していません。タッチ中は指の動きに合わせてダイレクトに座標をコントロールします。//小数点以下は丸めるタッチ開始時のタッチ座標とキャラクターの座標を記録しておき、指を移動したときは初期座標からの指の変位をキャラクターの座標の変位としています。キャラクターの正確な位置はfloatPositionというインスタンス変数に入れておき、座標の計算はself.positionではなくその値を使用します。画面表示するときに小数点以下を丸めた値をself.positionに入れます。これは、前回の記事に書いたとおりself.positionに入れる値を整数に制限してタイルマップ上にチラチラと隙間が発生するのを防ぐためです。self.positionの値を直接丸めると計算誤差でおかしな動きをするので注意が必要です。座標計算を同時に毎回キャラクターの速度のベクトルの平均値を計算しています。前回までの平均と今回の速度ベクトルを足して、ベクトルの長さを半分にします。//現在の位置を記憶しておくタッチしている指を離したときは毎フレームupdateメソッドから呼ばれるinertiaメソッドでで移動処理を行います。inertialメソッドでは速度ベクトルに0.9を掛け、毎フレームスピードを減衰させます。この0.9の値を0に近づけて行くと慣性が弱まり早く止まります、1に近づけると慣性が強くなりなかなか止まらなくなります。allignPosition:_floatPosition];動画です。いい感じで動いてると思いませんか?動画は30フレームなのでそんなにいい感じに見えないかもしれませんが、実機ではヌルヌル動いています。最終的にはあっさりしたコードになりましたが、ここにたどり着くまで試行錯誤の連続でした。ちなみに、背景のクラスの実装はこのようになっていて、updateでCatクラスのインスタンスが常に画面の真ん中に来るように背景のpositionを毎フレーム動かしています。Catクラスの親ノードであるスプライトバッチノードは背景オブジェクトにaddChildしているので背景に同期して毎フレーム自動的に動いています。23:55【cocos2d】慣性スクロールの実装。4面のボスとして登場するクマの目から発射す...2013-05-31【cocos2d】CCAction実行中の時間の経過にご注意!cocos2dのCCAction実行中は時間が経過し、プログラムの他の部分...2013-05-30【cocos2d】バッタがジャンプする動きを実装。今回はBeeClusterの4面にバッタを出してみました。アプリこの商品を含むブログを見るプロフィールid:takujidev個人でiPhone/Androidゲームを開発しています。ミツバチ軍団vs昆虫軍団の縦スクロールシューティング。