読者です 読者をやめる 読者になる 読者になる

おもちゃラボ

Unityで遊びを作っていきます

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

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の教科書」で書いたルーレットの減衰と似たようなものです。参考にしてみてください。

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity5.5.0f3でパーティクルがピンク色になる

Unity Unity5の教科書

Unity5の教科書のP.336で、イガグリにパーティクルをアタッチすると白いパーティクルが放出されている画像(Fig.7-57)が載っています。

f:id:nn_hokuson:20161227223609p:plain

Unity5.5.0ではParticleSystemコンポーネントをゲームオブジェクトにアタッチすると、下図のようにピンク色のパーティクルが放出されるようです。

f:id:nn_hokuson:20161227222116p:plain

これは、パーティクルにマテリアルが設定されていないのが原因です。Unityではマテリアルが設定されていなかったり、シェーダファイルにエラーがあるとピンク色の画像になります。

これを解決するためには、パーティクルに正しいマテリアルをセットする必要があります。ParticleSystemをアタッチしたゲームオブジェクト(書籍の場合はigaguri)をヒエラルキービューから選択して下さい。インスペクタに表示されるParticle Systemの設定から「Renderer」をクリックして開き、「Material」の欄の丸印をクリックします。

f:id:nn_hokuson:20161227223058p:plain

表示されるSelect Materialウインドウから「Default-Particle」を選択します。

f:id:nn_hokuson:20161227223222p:plain

これで、パーティクルが正しく表示されると思います。

f:id:nn_hokuson:20161227223311p:plain