おもちゃラボ

Unityで遊びを作ってます

敵にやられたときに画面を赤く光らせる

昔のゲームだと敵にやられたときに画面全体が赤くフラッシュしたりしましたね。今回はこんなのを作ります。

f:id:nn_hokuson:20170111213513g:plain

まずはプロジェクトを作って画面全体を光らせるためのImageを配置しましょう。ヒエラルキービューから「Create」→「UI」→「Image」を選択し、画面いっぱいにImageを広げます。

f:id:nn_hokuson:20170111213927p:plain

次にスクリプトを作ります。プロジェクトビューで「右クリック」→「Create」→「C# Script」を選択して、ファイル名を「FlushController」 に変更します。ダブルクリックして次のスクリプトを入力してください。

using UnityEngine;
using UnityEngine.UI;

public class FlushController : MonoBehaviour 
{
	Image img;

	void Start () {
		img = GetComponent<Image> ();
		img.color = Color.clear;
	}

	void Update () 
	{
		if (Input.GetMouseButtonDown (0))
		{
			this.img.color = new Color (0.5f, 0f, 0f, 0.5f);
		}
		else
		{
			this.img.color = Color.Lerp (this.img.color, Color.clear, Time.deltaTime);
		}
	}
}

通常はゲームシーンが見えるように、Imageは透明にしておきます。攻撃されたとき(ここではマウスをクリックしたとき)に画面が赤く光るようにImageのColorを赤色にしています。

このままでは画面がずっと赤色になってしまうので、だんだん元の透明に近づける計算をelse文の中でしています。Lerpは第一引数と第二引数のを第三引数の値に応じてミックスしてくれる、超便利なメソッドです。この計算を繰り返しすることで最終的に透明色に収束します。

作成したスクリプトをヒエラルキービューの「Image」にアタッチします。

f:id:nn_hokuson:20170111214211p:plain

実行結果はこんな感じになりました。モグラは雰囲気です(笑)

f:id:nn_hokuson:20170111215212g:plain

第三引数の値を変えることで減衰速度を変えることができます。やっていることは、「Unity5の教科書」で書いたルーレットの減衰と似たようなものです。参考にしてみてください。