DOTweenを活用したゲームオーバーテキストアニメーション資料
本資料では、Unityにおけるゲームオーバー表示の演出として、DOTweenライブラリを利用したアニメーション実装例「GameOverTextAnimator」について解説します。DOTweenの基本的な使い方、各アニメーションの処理内容、シーン遷移処理について理解することが目的です。
目次
概要
本スクリプトは、ゲームオーバー時に以下の演出を実装します。
- オブジェクト(ここではゲームオーバーテキスト)を画面上部から本来の位置に移動するアニメーションを実行。
- 移動完了後、シェイク(振動)によるインパクトを与える演出を実施。
- 指定した待機時間後に、タイトルシーンへ自動遷移させる処理を実装。
DOTweenの便利な機能(Tween作成や遅延処理)を活用し、シンプルなコードで効果的な演出を実現しています。
コード全体の説明
以下が「GameOverTextAnimator」スクリプトの全体コードです。
using DG.Tweening;
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverTextAnimator : MonoBehaviour
{
private void Start()
{
var transformCache = transform;
// 終点として使用するため、初期座標を保持
var defaultPosition = transformCache.localPosition;
// いったん上の方に移動させる
transformCache.localPosition = new Vector3(0, 300f);
// 移動アニメーション開始
transformCache.DOLocalMove(defaultPosition, 1f)
.SetEase(Ease.Linear)
.OnComplete(() =>
{
Debug.Log("GAME OVER!!");
// シェイクアニメーション
transformCache.DOShakePosition(1.5f, 100);
});
// DOTweenには、Coroutineを使わずに任意の秒数を待てる便利メソッドも搭載されている
DOVirtual.DelayedCall(10, () =>
{
// 10秒待ってからタイトルシーンに遷移
SceneManager.LoadScene("TitleScene");
});
}
}
各処理の詳細解説
名前空間のインポート
- using DG.Tweening;
DOTweenライブラリの機能(アニメーション作成、トゥイーン操作など)を使用するために必要です。 - using UnityEngine;
Unityの基本機能(オブジェクト操作、デバッグログなど)を提供します。 - using UnityEngine.SceneManagement;
シーンのロードや切り替えを管理する機能が含まれており、ここではシーン遷移処理に使用しています。
初期設定と位置調整
var transformCache = transform;
var defaultPosition = transformCache.localPosition;
transformCache.localPosition = new Vector3(0, 300f);
- Transformのキャッシュ
transform
プロパティの参照をキャッシュすることで、処理速度の向上とコードの可読性を高めています。 - defaultPositionの保存
現在のローカル座標を保存し、後でアニメーションの終着点として利用します。 - 初期位置の変更
オブジェクトを一旦(0, 300f)
に移動させ、画面上部(またはシーン内で上方向)に配置します。これにより、後で下方向への移動を視覚的に分かりやすく実現します。
移動アニメーションとシェイクエフェクト
transformCache.DOLocalMove(defaultPosition, 1f)
.SetEase(Ease.Linear)
.OnComplete(() =>
{
Debug.Log("GAME OVER!!");
transformCache.DOShakePosition(1.5f, 100);
});
- DOLocalMove
オブジェクトのローカル位置を、defaultPosition
(保存しておいた元の位置)に1秒間かけて移動させます。 - SetEase(Ease.Linear)
アニメーションの速度を線形(一定)に設定することで、開始から終了まで均一な動作を実現します。 - OnCompleteのコールバック
移動アニメーションが終了した際に以下の処理を実行:Debug.Log("GAME OVER!!");
コンソールに「GAME OVER!!」と表示し、処理完了のログ確認ができます。DOShakePosition(1.5f, 100);
指定された1.5秒間、位置をランダムに揺らすシェイク効果を適用。第二引数の100
はシェイクの強度を示しており、視覚的インパクトを強調します。
シーン遷移の処理
DOVirtual.DelayedCall(10, () =>
{
SceneManager.LoadScene("TitleScene");
});
- DOVirtual.DelayedCall
DOTweenが提供するメソッドで、指定秒数(ここでは10秒)待機した後に、指定されたラムダ式内の処理を実行します。これにより、コルーチンを使わずに非同期処理が可能です。 - シーン切替処理
10秒経過後、SceneManager.LoadScene("TitleScene");
によりタイトルシーン(シーン名:"TitleScene")へ自動で遷移します。
全体の流れ
- 初期設定と配置
- オブジェクトの現在位置(defaultPosition)を保存後、画面上部の
(0, 300f)
に移動させる。
- オブジェクトの現在位置(defaultPosition)を保存後、画面上部の
- 移動アニメーションの実行
- 保存した初期位置へ1秒間で滑らかに移動する。
- 移動完了後、コンソールに「GAME OVER!!」を出力し、1.5秒間のシェイクアニメーションを実施。
- シーン遷移
- DOTweenの遅延処理を利用し、10秒後にタイトルシーンへ自動で切り替える。
まとめ
本資料で紹介した「GameOverTextAnimator」スクリプトは、DOTweenライブラリを利用して簡潔かつ視覚的なゲームオーバー演出を実装しています。
- アニメーションの活用:
初期位置から本来の位置への移動、シェイクエフェクトにより動的な演出が可能です。 - 非同期処理:
DOTweenのDOVirtual.DelayedCall
を用いたシーン遷移処理で、コルーチンを使わずシンプルなコードで実装できています。
この実装例を基に、より複雑なアニメーションやエフェクトを追加することで、ゲーム全体の演出をさらに向上させることが期待できます。ぜひ、プロジェクト内で実際に試しながら、DOTweenの機能を活用してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません