ゲームで「地に足の着いた感」を出すには影を使うのが一般的ですが、面白い表現として足跡を使うことがあります。この記事ではUnityで「それっぽい」足跡を表示する方法を紹介します。
記事の内容は次のとおりです。
ステージをセッティングする
ここでは次のようなステージを作成し、NavMeshを使ってUnityちゃんを走らせるようにします。
NavMeshを使ってUnityちゃんを走らせる方法は次の記事を参照ください。
足跡のテクスチャを用意する
片足づつのテクスチャを使うと配置するのが大変になるので、今回は両足ぶんのテクスチャを用意します。足跡の中点がテクスチャの中心に来るようにします。
続いてこのテクスチャをシーンビューに配置します。ヒエラルキーウインドウでCreate -> 3D Object -> Plane
を選択して、画面上に地面と平行になるように配置してください。
足跡テクスチャをPlaneにドラッグ&ドロップし、ShaderのRendering Modeを「Fade」に設定します。また、Smoothnessは「0」に設定しておきます。
Standard ShaderのFadeとTransparentの違いは次の通りです。
オプション | 意味 |
---|---|
Transparent | ガラスのような透明感(光の具合によっては不透明) |
Fade | どこから見ても透明 |
ヒエラルキーウインドウからプロジェクトウィンドウに足跡のテクスチャをドラッグ&ドロップして足跡のPrefabをつくります。名前はfootPrintPrefabにしておきます。
Unityちゃんの通った経路に足跡を生成する
Unityちゃんの通った経路に足跡を生成していくスクリプトを作りましょう。プロジェクトウィンドウで右クリックし、Create -> Script -> C# Script
を選択してください。
スクリプトが作れたら名前を「UnitychanController」にして、次のスクリプトを入力してください。
public class UnitychanController : MonoBehaviour { public GameObject footPrintPrefab; float time = 0; void Update() { this.time += Time.deltaTime; if (this.time > 0.35f) { this.time = 0; Instantiate (footPrintPrefab, transform.position, transform.rotation); } }
Updateメソッドの中で一定時間ごとに、ユニティちゃんの向いている方向に合わせて足跡Prefabのインスタンスを生成しています。
UnitychanControllerをユニティちゃんにドラッグ&ドロップして、アタッチしてください。続けて、アタッチしたスクリプトのfootPrintPrefabの欄に、足跡Prefabの実態をセットしてください。
これで、ユニティちゃんの歩いた経路に従って足跡が表示されるようになりました。実行してみてください。
足跡がだんだん薄れていくようにする
今のままでも良いですが、徐々に足跡が薄れていくように変更してみます。
プロジェクトウィンドウで右クリックし、Create -> Script -> C# Script
を選択して「FootPrintController」を作り、次のスクリプトを入力してください。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FootPrintController : MonoBehaviour { void Start () { StartCoroutine (Disappearing ()); } IEnumerator Disappearing() { int step = 90; for (int i = 0; i < step; i++) { GetComponent<MeshRenderer> ().material.color = new Color (1, 1, 1, 1 - 1.0f * i / step); yield return null; } Destroy (gameObject); } }
このスクリプトではDisapearingコルーチンの中で、マテリアルの透明度を徐々に下げることで足跡を薄れさせています。最後にDestroyメソッドでインスタンスを破棄しています。
作成したFootPrintControllerをプロジェクトウィンドウのfootPrintPrefabにアタッチして再度実行してみてください。今度は足跡が徐々に薄れていくはずです。
まとめ
Unityちゃんに足跡を付ける方法を紹介しました。雪の上に足跡をつけるなど、ちゃんと地面を凹ませたい場合は、こちらの記事が参考になります。
確かな力が身につくC#「超」入門とUnity5の教科書もよろしくお願いします〜