【Unity】距離によってビネットの強さを変える

投稿者: | 2021-04-23

敵などが近くにいるときに、ビネットの強さを上げて、画面の縁が黒くなるようにしてみます。

ビネットを追加する

まず、ヒエラルキーでVolumeオブジェクトを作ります。

Volumeを選択して、インスペクタで、Newをクリックして新しいプロファイルを作ります。

「Add Override」をクリックして、Vignetteを追加します。

検索ですぐに見つかります。

パラメータを調節する

追加したら、パラメータを変えるには横のチェックを入れます。

Intentityを上げると黒い部分が増えます。

Smoothnessを下げると境界がはっきりします。

Roundnessを下げると四角くなります。

Roundedのチェックを入れると、楕円でなく円になります。

Centerで穴の位置を変えられます。

Colorで色変わります。

ModeをMaskにすると画像を使えます。Opacityで縁の不透明度を変えられます。

スクリプトで強さを変える

Intensityの値をスクリプトで変えます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;

public class VignetteTest : MonoBehaviour
{
    [SerializeField] Transform player;
    [SerializeField] Transform target;
    [SerializeField] Volume volume;
    [SerializeField] float maxIntensity = 0.6f;
    Vignette vignette;

    // Start is called before the first frame update
    void Start()
    {
        volume.profile.TryGet(out vignette);
    }

    // Update is called once per frame
    void Update()
    {
        float dir = Vector3.Distance(player.position, target.position);

        vignette.intensity.value = Mathf.Clamp(5f / dir, 0f, 1f) * maxIntensity;
    }
}

プレイヤーとターゲットをスクリプトにアタッチして、その距離を強さの値に使っています。5メートル以内で最大になるような値を作ってから、最大値を小さくするための値をかけています。

これで、ターゲットに近づくとビネットが表示されるようになりました。

コメントを残す

メールアドレスが公開されることはありません。