【iPhoneゲーム開発3】ジャンプアクションを実装してみた

こんにちは、のっくんです。

今日はSpriteKitを使ってキャラクターをジャンプさせる方法をご紹介します。

実装してみた内容としては以下の通り。

  • ジャンプのアニメーションを作る
  • ジャンプボタンでジャンプする

順番に見ていきます。

ジャンプのアニメーションを作る

7枚の画像をパラパラ漫画のように表示させてアニメーションを作ります。

1枚あたりの表示時間は0.08秒にしました。

表示時間はコードを動かしつつ調整するのが良いです。

アイドル状態やランニングと違って、一回限りのアクションになっています。

何回も実行する必要はありません。

ジャンプの制御

ジャンプボタンが押されたらジャンプのフラグをオンにします。

指がボタンから離れたらフラグをオフにします。

ボタンに名前をつけて、押されたボタンを判別するようにしています。

ジャンプの処理は、GameScene.swiftのupdateに記載します。

updateはフレームが更新されるたびに呼ばれます。

ジャンプのフラグを確認してオンだったら、ジャンプ処理とアニメーションを開始します。

ジャンプ中に再度ジャンプボタンを押す行為を防ぐために、インターバル時間を設定しています。

連続してジャンプができてしまうと、鳥のように空を飛ぶことができてしまいます。

それはそれでゲームとしては面白いかもしれませんが、今回は人間キャラなので空を飛ぶのは禁止します。

updateTimeが0なのは初回時のジャンプ時です。

初回時は無条件でジャンプできるようにしています。

2回目以降は、現在時刻から前回のジャンプ時刻の差分を計算し、インターバル時間より大きいか比較しています。

ジャンプ処理

applyImpulseでy軸方向に衝撃を与えてキャラクターを浮かせます。

すいません、dyの値は割と適当です。

小さい値だとジャンプの高さが低かったので大きめにしました。

SKPhysicsBodyにはapplyImpulseとapplyForceがあります。

applyForceは連続的に加速度を与える時に使います。

上昇するロケットや鳥が羽ばたく時ですね。

今回は一瞬だけ衝撃を与えてジャンプさせるため、applyImpulseを使います。

アニメーションを開始するのもこのタイミングで行います。

【iPhoneゲーム開発4】背景と地面を設定してみた