本日はUnityでアニメの世界の演出を行います。
今回はアニメ機動戦士ガンダムSeedでメカが起動する際に行われるOS表示の演出をUnityで再現します。
〇ガンダムSeedのOSの表示演出
上画像のように一文字ずつ、大文字に変換されていく演出を行います。
〇コード全文
今回は次のようなコードを書きました。
using System; using System.Collections; using System.Collections.Generic; using JetBrains.Annotations; using UnityEngine; using UnityEngine.Events; using TMPro; public class TextSclloler : MonoBehaviour { [SerializeField] TextMeshPro _OriginalText; [SerializeField,Header("OutPut")] private TextMeshPro _OutputText; [SerializeField] private bool _TextChanged; [SerializeField] private UnityEvent _pocessingEvent; [SerializeField] private UnityEvent _endEvent; public string st; public string _ChangedText; [SerializeField,Range(0.01f,1)] float _speed; public string subText; public string output; private void Start() { StartCoroutine("SentText"); } IEnumerator SentText() { _TextChanged = true; int _textsize = _OriginalText.text.ToString().Length; subText = _OriginalText.text.ToString(); int i = 0; while (i<_textsize) { _ChangedText += subText.Substring(i, 1).ToUpper(); //ToDoFixError st =subText.Remove(0, i+1); output = _ChangedText + st; _OutputText.text = output; _pocessingEvent.Invoke(); yield return new WaitForSeconds(_speed); i++; } _TextChanged = false; _endEvent.Invoke(); } public void SetColor() { Color col = new Color(1, 0, 0); Material mat = _OutputText.GetComponent<Renderer>().material; mat.SetColor("_FaceColor", col); } }
このスクリプトを適当なゲームオブジェクトに配置します。
・[OriginalText]には変換する元となるテキストを、出力先に[OutputText]を指定します。
今回の場合は同一のオブジェクトを設定しています。
・[speed]は変換速度です、これは変換時間に該当するため値が小さいほど早く変換されます。
・[pocessingEvent]、[endEvent]にはそれぞれ文字が変換されるたびに実行されるイベント、すべての処理が完了した際に実行されるイベントを指定します。
ここでは[AudioSource]を指定し音が鳴るように設定しています。
〇実行
実行すると次のようになります。
コード解説は別記事で行います。