本日は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]を指定し音が鳴るように設定しています。
〇実行
実行すると次のようになります。

コード解説は別記事で行います。