Unityに関連する記事です

 ジャンプの処理とジャンプのアニメーションを同期させる機能を実装します。


<実装動画 ジャンプアニメなし>
動画ファイルへのリンク

<実装動画 ジャンプアニメあり>
動画ファイルへのリンク



 以下の内容で順番に実装を進めていきます。

手順11 ージャンプ処理とジャンプアニメーションの同期ー
・PlayerAnimation スクリプトの修正
・PlayerJump スクリプトの修正



1.設計


 前回の手順では移動の処理と移動のアニメーションの同期を実装しました。
同じようにジャンプについても、ジャンプの処理とアニメーションの同期を行うようにします。

 ジャンプのアニメーションの遷移は Trigger 型を利用して遷移を実行します。
アニメの処理については PlayerAnimation スクリプトにまとめて書いていますが、まだジャンプのアニメーション遷移処理は書いてありません。
代わりに TODO という形で実装予定の部分を記述してあります。
このように今後実装したい機能などがある場合には、前もって日本語のコメントで TODO を残しておくとよいでしょう。

 またジャンプの機能は PlayerJump クラスに作成してありますが、
ジャンプのアニメーションの同期をさせる処理はまだ作ってありません。
こちらも TODO を用意していますので、そちらの部分の実装を行っていきます。



 複数のクラスをまたがって処理を作っていく場合には、両方の処理の繋がりをイメージして処理を作っていく必要があります。

 今回であれば、以下のような処理の流れになります。

<PlayerJump クラス>
 ・PlayerJump クラスでジャンプの処理を実行する。
  このクラスの中で PlayerAnimation クラスに用意するジャンプのアニメーションの同期を行うメソッドを実行する。

    ↓

<PlayerAnimation クラス>
 ・Animator を利用してジャンプのアニメーション遷移を行い、ジャンプの機能とアニメーションの同期を行う。

 このような順番で処理が動きます。

 命令を受ける側(PlayerAnimation クラス)の処理を作っておかないと、命令を実行する(出す)側(PlayerJump クラス)は処理が作れません。

 そのため、処理を作っていく際には、作りたい機能全体の流れを設計し、それを、ゴール地点(命令を受ける側)から作っていくようにするとつくりやすいです。

 この教材ではすべてそのような設計をベースに、命令を受ける側から作っています。
設計の学習は非常に大切ですので、もう一度、見直してみるとよいでしょう。


2.PlayerAnimation スクリプトを修正する


 TODO に書いてある Trigger の命令を実行するためのメソッドを作成します。

 今までの処理などを参考にして、自分で考えて処理を書いてみるチャレンジをしてみてください。


PlayerAnimation.cs

 ← クリックすると開きます



3.<Animator.SetTrigger() メソッド>


 Unityのアニメーションは、Animatorクラスによって様々なアニメーションの制御が行えます。

Unity公式スクリプトリファレンス
Animator




 今回はアニメーションの遷移のために SetTriggerを利用し、遷移の条件をこのメソッドの引数に指定してアニメーションの遷移を行っています。

 各メソッドの引数にはそれぞれ型の指定が異なりますが、いずれも第1引数は string 型です。この部分には、パラメータで設定した文字列を指定します。
文字列ですので大文字小文字は区別されます。パラメータに登録した文字列をこの第1引数に指定することでパラメータのもつ情報を変更することが出来ます。

  // Trigger パラメータのアニメの再生
  anim.SetTrigger(nextAnimState.ToString());

 こうすることで、このパラメータの値をスクリプトから書き換えることができます。その結果として、条件が合致したアニメーションに遷移することが出来ます。



 今回は第1引数について文字列での直接記述(リテラル表記)ではなく、
enum の PlayerAnimationState 型を指定し、それを ToString メソッドを利用して string 型にキャストしています。
このようにすることで、文字列を直接書き込んで打ち間違えをしてしまう、エラーの可能性を排除しています。

<今回の実装例>
  anim.SetTrigger(nextAnimState.ToString());

<参考サイト>
Unity公式スクリプトリファレンス
SetTrigger



4.PlayerJump スクリプトを修正する


 ジャンプ機能の処理にアニメの同期機能を追加して、ジャンプ時に、ジャンプのアニメーションを再生するようにします。

 こちらも処理については、TODO を記述してある部分を実装します。
今後も、追加していきたい処理がある場合には、日本語で TODO を残しておくようにすると、処理の書き洩らしを防げます。

 アニメーションについては PlayerAnimation クラスがアニメーションの遷移制御を担当しています。
先ほど、PlayerAnimation クラスにメソッドを追加しましたので、そちらに対して命令を出せるように、新しい変数をメンバ変数として追加します。

 メンバ変数を追加する場合、アクセス修飾子が同じレベルのものでまとめて記述しておくと読みやすくなります。


PlayerJump.cs

 ← クリックすると開きます



5.ゲームを実行して動作を確認する


 2つのクラスを使って機能の実現をしています。
そのため、どのように処理がつながっているのかを、1つのクラスだけではなくて、両方のクラスを見直しておきましょう。

 デバッグをする際には、どのように処理が動くのかを想定してからゲームを実行していくように心がけてください。
教材では「正解」「間違い」を提示していますが、実際に自分が一人で作るゲームでは誰も正解は教えてくれません。
そのため、今から一人で判断がつけられるように準備していきましょう。


<実装動画 
動画ファイルへのリンク


<実装動画◆
動画ファイルへのリンク



 以上でこの手順は終了です。

 => 次は 手順12 ー− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます