敵などが近くにいるときに、ビネットの強さを上げて、画面の縁が黒くなるようにしてみます。
ビネットを追加する
まず、ヒエラルキーで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メートル以内で最大になるような値を作ってから、最大値を小さくするための値をかけています。
これで、ターゲットに近づくとビネットが表示されるようになりました。