UIで簡単にエンドロールを作る(トリガー検出)

複雑なものを必要としない場合のサンプルになります
基本の動きに絞っていますので、必要に応じてカスタマイズします

実行結果

このサンプルでは、無限ループになるように作られています
単純なエンドロールであれば、ループの箇所を省略することができます

シーンの構成

テロップ

テロップは、3つのパーツに分ています
キャプチャーはそのうちの1つですが、後の2つも位置が違うだけで同じです
トリガー検出のため、BoxCollider2Dをアタッチします
サイズは1でもいいですが、RectTransformに合わせてあります

エンドポイント

UIのテキストを上方向に移動させています
エンドポイントの位置にテロップが来ると、OnTrigger Enterイベントが発生して、スタートポイントにジャンプするようにしておきます

テロップコントローラ

空のゲームオブジェクトを作成し、テロップを動かすためのスクリプトをアタッチします
必要なパラメータをアウトレット接続します

スクリプト

EndPointCheck

エンドポイントのオブジェクトにアタッチします
トリガーがヒットしたテロップの座標をスタートポイントに変更します

using UnityEngine;

public class EndPointCheck : MonoBehaviour
{
    [SerializeField]
    RectTransform startPoint;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        collision.transform.localPosition = new Vector3(
            collision.transform.localPosition.x,
            startPoint.transform.localPosition.y,
            collision.transform.localPosition.z);
    }
}

Telop

テロップのコントローラーオブジェクトにアタッチします
ひたすらすべてのテロップを移動させる仕事です

using UnityEngine;

public class Telop : MonoBehaviour
{
    [SerializeField]
    RectTransform[] telops;

    void Update()
    {
        for (int i = 0; i < telops.Length; i++)
        {
            telops[i].localPosition += Vector3.up * .1f;
        }
    }
}

最後に

このサンプルではUIのテキストだけですが、他にイメージを配置しておくとそれも移動させることができます
数値の調整がいらないので、バランス調整はスクリプトを変更する必要もありません

参考

位置の確認でスタート位置に戻る方法になります

Unity

Posted by hidepon