【Unity】カメラのシャッターエフェクト(フラッシュ)を実装してみる

どーも、ぐるたか@guru_takaです。

Unityでカメラのシャッターエフェクトを実装してみました。成果物は以下のGIFになります!

参考になれば幸いです。

MEMO
Unityのバージョンは2019.1です。

実装の流れ

以下の手順で実装を進めていきます!

  • フラッシュ機能
  • シャッター音

STEP1:フラッシュ機能

フラッシュ機能はパネルの白色フェードアウトで実装していきます。

ここでは、マウスのクリックでシャッターを発火させるPGで進めるのでご注意ください!

実装方法は以下の通りです。

①Create→UI→Panelで作成

②作成したPanelのImageを下画像のように設定

③以下のソースを作成

using UnityEngine;
using UnityEngine.UI;

public class FlashController : MonoBehaviour
{
    private Image img;

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

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

クリックすると白色Panelに変化。その後、Lerp関数を使い、時間が経つにつれて、Panelがフェードアウトするようになってます。

④作成したパネルに上記のソースをアタッチ

すると、フラッシュのエフェクトが実装できました。わりと良い感じです!

STEP2:シャッター音

無音だと寂しいので、シャッター音を追加します。まず下記リンクからシャッター音をダウンロードしましょう!
参考記事のタイトルとURLを入力してください” site=”効果音ラボ” target=”_blank”]

DLした音声ファイルをUnityのプロジェクトフォルダに移動させます。

その後、Audio Sourceのコンポーネント追加→音声ファイルをアタッチ→「Play On Awake」のチェック欄を空白にしましょう!

そして、Scriptにシャッター音が鳴るよう、加筆します。

using UnityEngine;
using UnityEngine.UI;

public class FlashController : MonoBehaviour
{
    private Image img;
    private AudioSource shutterAudio;

    void Start()
    {
        img = GetComponent();
        img.color = Color.clear;
        shutterAudio = gameObject.GetComponent();
    }

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

ぜひお試しください。もうシャッターエフェクトといっても良いのではないでしょうか!

最後に

以上になります。

好みの問題になりますが、Post Processing Stackを使って、Bloomエフェクトも実装すると、シャッターの眩しい輝きも実装できます。

興味ある方は、 Bloom機能もぜひお試しくださいませ!

参考記事

コメントを残す