Unity中通过脚本实现2D触发器控制Chromatic Aberration渐变效果问询
Unity 2D恐怖游戏:碰撞触发色差渐变效果实现指南
先做必要的项目设置
- 打开Package Manager(Window > Package Manager),搜索并安装Post Processing包
- 在场景中创建全局后期处理体积:右键 > Effects > Post Process Volume,勾选Inspector里的
Is Global - 选中这个Volume,在
Profile栏点击Add Effect,选择Chromatic Aberration,初始将Intensity设为0 - 给主相机添加
Post Process Layer组件,Layer选择Everything(或你游戏对应的层) - 玩家对象必须添加
Rigidbody2D(设置为Kinematic也可)和Collider2D(不要勾选Is Trigger);触发区域的对象添加Collider2D并勾选Is Trigger
修正后的可用脚本
using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class ChromaticTrigger : MonoBehaviour { [Header("触发设置")] public Collider2D playerCollider; // 拖入玩家的Collider2D [Header("后期处理设置")] public PostProcessVolume postProcessVolume; public float maxIntensity = 0.5f; // 色差最大强度 public float lerpSpeed = 3f; // 渐变速度 private ChromaticAberration _chromaticAberration; private void Awake() { // 从后期处理体积中自动获取色差组件 postProcessVolume.profile.TryGetSettings(out _chromaticAberration); } private void OnTriggerEnter2D(Collider2D other) { // 仅玩家进入触发区时启动渐变 if (other == playerCollider) { StartCoroutine(LerpIntensity(maxIntensity)); } } private void OnTriggerExit2D(Collider2D other) { if (other == playerCollider) { StartCoroutine(LerpIntensity(0f)); } } // 用协程实现平滑渐变,避免Update循环冗余判断 private IEnumerator LerpIntensity(float targetIntensity) { float currentIntensity = _chromaticAberration.intensity.value; float elapsedTime = 0f; while (elapsedTime < 1f) { elapsedTime += Time.deltaTime * lerpSpeed; _chromaticAberration.intensity.value = Mathf.Lerp(currentIntensity, targetIntensity, elapsedTime); yield return null; } // 确保最终值精准到位 _chromaticAberration.intensity.value = targetIntensity; } }
脚本使用步骤
- 将脚本拖到触发区域的GameObject上(即带Is Trigger属性的碰撞体对象)
- 在Inspector面板中:
- 拖入玩家对象的
Collider2D到Player Collider字段 - 拖入场景中的
PostProcessVolume到Post Process Volume字段 - 调整
Max Intensity(建议0.3-0.8,数值越大色差越强烈) - 调整
Lerp Speed(建议2-5,数值越大渐变速度越快)
- 拖入玩家对象的
关键修正说明
- 修复触发逻辑:原脚本判断逻辑颠倒,现在改为检测进入触发区的是玩家,符合需求
- 自动获取组件:通过
TryGetSettings从Volume配置中自动获取色差组件,无需手动拖拽,降低新手操作失误率 - 协程优化渐变:相比Update循环Lerp,协程更高效且能精准控制渐变过程
- 可视化参数:将最大强度、渐变速度设为可调节变量,方便快速调试恐怖氛围
内容的提问来源于stack exchange,提问作者LIMON
相关产品推荐
相关产品推荐

