夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Unityでアニメ世界のUI演出を行う。

本日はUnityでアニメの世界の演出を行います。

今回はアニメ機動戦士ガンダムSeedでメカが起動する際に行われるOS表示の演出をUnityで再現します。

ガンダムSeedのOSの表示演出

f:id:Holomoto-Sumire:20210524185350g:plain

上画像のように一文字ずつ、大文字に変換されていく演出を行います。

〇コード全文

今回は次のようなコードを書きました。

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);
        }
    }    

このスクリプトを適当なゲームオブジェクトに配置します。

f:id:Holomoto-Sumire:20210524094626j:plain

・[OriginalText]には変換する元となるテキストを、出力先に[OutputText]を指定します。

今回の場合は同一のオブジェクトを設定しています。

・[speed]は変換速度です、これは変換時間に該当するため値が小さいほど早く変換されます。

・[pocessingEvent]、[endEvent]にはそれぞれ文字が変換されるたびに実行されるイベント、すべての処理が完了した際に実行されるイベントを指定します。

 ここでは[AudioSource]を指定し音が鳴るように設定しています。

〇実行

実行すると次のようになります。

f:id:Holomoto-Sumire:20210524190447g:plain

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