Unityに関連する記事です

 ポップアップ内で選択しているキャラをタイルマップに配置する処理を実装します。

 この手順が完成することで、下記の動画のように、ポップアップ内で選択したキャラが配置される機能を実装します。
ただし、配置したキャラがアニメーションせずに、1枚の画像の状態である場合で問題がない場合には、この手順は不要です。

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


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

手順23 ー配置したキャラのアニメを自動設定する処理の実装ー
41.CharaController スクリプトを修正し、配置したキャラに合わせたアニメーションを再生する機能を実装する



 新しい学習内容は、以下の通りです。

 ・AnimationClip の動的な差し替え処理



1.設計


 画面に配置したキャラは CharaData に Sprite 画像の設定があるため、その情報を参照して、画像が変わるようになっています。

 この手順ではさらに一歩踏み込んで、各キャラごとに作成したアニメーションの情報(AnimationClip)を CharaData として設定できるようにし、
ゲームオブジェクトの振る舞いを変えるようにします。

 そうすることにより、画面に配置したキャラは、1枚の画像ではなく、アニメーションする情報もキャラごとに参照して設定できるようにします。


2.キャラごとのアニメーションを作成する


 手順9内にある【14.2移動アニメの作成を行う】を参考にしながら、
各キャラのスプライトアニメーションを作成します。

 正面を向いているスプライト画像を利用してアニメーションを作成してください。名前は Chara_1 のように、終わりの数字の部分を連番にして
CharaDataSO スクリプタブル・オブジェクト内の各キャラの通し番号の情報(CharaNo 変数)と同じ番号にしておくことで管理がしやすくなります。

 スプライトアニメーションを作成すると AnimationClip の他に AnimatorController が作成されます。
これらは不要ですので、AnimationClip だけ残して、AnimatorController は削除してください。

 フォルダなども自分で作成して、ファイルの整理整頓を心がけてください。


参考 キャラ分の AnimationClip。AnimatorController は最初にあるもの以外は削除



 続いて、この各 AnimationClip を CharaDataSO スクリプタブル・オブジェクトに登録できるようにするため、CharaData クラスに情報を追記します。


3.CharaData スクリプトを修正し、アニメーションの情報を登録できるようにする


 スクリプタブル・オブジェクトのデータは、この CharaData クラスを元に作成されています。
そのため、スクリプタブル・オブジェクトに新しい変数の情報を追加したい場合には、その元である CharaData スクリプトを修正して、新しい変数を追加する必要があります。


CharaData.cs

<= クリックすると開きます


 スクリプトを修正したらセーブを行います


4.CharaDataSO スクリプタブル・オブジェクトに各キャラごとの AnimationClip を登録する


 CharaData クラスに新しい変数を追加しましたので、セーブを行うと、スクリプタブル・オブジェクトの方にも自動的に新しい情報として CharaAnim 変数が追加されます。
新しい変数が追加されるだけで以前のデータは残っています。

 charaAnime 変数には【2.キャラごとのアニメーションを作成する】で作成したスプライトアニメーション(AnimationClip 型)を登録できます。
ドラッグアンドドロップして、各キャラごとの AnimationClip を登録してください。


CharaDataSO スクリプタブル・オブジェクト インスペクター画像



 以上で設定は完了です。最後に CharaController を修正し、この CharaAnim 変数を利用して、配置されたキャラに合わせてアニメーションを差し替える処理を実装します。


5.CharaController スクリプトを修正する


 アニメーションの設定用の変数の宣言と SetUpChara メソッド内でアニメーションの設定用の SetUpAnimation メソッドの呼び出しを記述します。
なお、SetUpAnimation メソッド内の処理は、テラシュールブログ様のサイトの記事を参考にさせていただいております。ありがとうございます。
テラシュールブログ 様
【Unity】MecanimのAnimationClipを動的に差し替える
http://tsubakit1.hateblo.jp/entry/2016/11/18/23413...

 処理の内容としては、AnimationClip の差し替えを行うことになります。
Animator ビューのステートを選択すると Motion 部分に AnimationClip の情報が表示されます。ここをゲーム内で動的に変更を行います。

 新しく作成する overrideClipName 変数に登録する文字列が、差し替える AnimationClip と同名の文字列である必要があります。
そのためこの変数の値は、自分のプロジェクトの内容に合わせて変更する必要があります

 Chara ゲームオブジェクトの Animator ビューを確認し、Chara ステートを選択します。このときインスペクターの Motion 部分に AnimationClip の名前が表示されますので、
その名称をこの変数に代入するようにしてください。そうしないと、キャラのアニメーションを動的に差し替える処理が上手く実行されません。


Animator ビュー インスペクター画像



 
CharaController.cs


 スクリプトを修正したらセーブを行います。


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


 キャラを配置してみてください。
CharaData に登録した AnimationClip にアニメーションが差し替われば制御成功です。

 もしも上手くいかない場合には、AnimationController の情報を Animator ビューで確認し、
Motion の部分の AnimationClip の名前と、スクリプト内の登録とが相違していないかをチェックしてください。


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


 これでスクリプタブル・オブジェクトを活用して、配置するキャラの情報を設定することで、
1つのゲームオブジェクトを異なるゲームオブジェクトになるように情報を設定する処理が完成です。



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

 次は 手順24 −ゲームの進行管理の制御機能の実装  です。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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