【Unity】ダメージを受けたときに画面を赤くする方法

unity

ゲームを作っていてダメージを受けた時のエフェクトをどうするか悩む方も多いはず。

1つの方法としては分かりやすいのは画面を赤くすることだと思います。

以下のような感じで作ってみました。

被弾時にカメラシェイクも入っていますが、何より画面が赤くなるのでわかりやすいですよね。

作り方を説明していきます。

画面一杯のイメージを作成する

キャンバスの中に真っ白なImageを作成します。

画面が全部覆われるくらいのサイズが良いですね。

赤くする処理

作成したImageを赤くしていきます。

必要な処理は以下の通り。

  • ゲーム開始時に画像を透明にする
  • ダメージを受けたら赤色にする
  • 赤色にしたフレームを透明に戻す

コードは以下の通りです。

   // 画面を赤にするためのイメージ
    public Image img;

    public void Start()
    {
        // 透明にして見えなくしておきます。
        img.color = Color.clear;
    }

    void Update()
    {
        // 時間が経過するにつれて徐々に透明にします。
        this.img.color = Color.Lerp(this.img.color, Color.clear, Time.deltaTime);
    }

    public virtual void Damage(int damage)
    {
        // *画面を赤塗りにする
        this.img.color = new Color(0.5f, 0f, 0f, 0.5f);
    }

img変数に代入するのは先ほど作成したキャンバス内のImageです。

上記の処理をプレイヤーにアタッチして使っています。

参考URL

以下のサイトのコードを参考にして作っています。

https://nn-hokuson.hatenablog.com/entry/2017/01/11/215346

分かりやすくて助かりました。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog