2.添加了Shader的框架(与屏幕后特效相关) 1)加入了LightController的代码文件,主要控制烛光等灯光的空气扰动现象 2)加入了VolumeController的代码文件,主要与屏幕后特效的控制变量相关 3)在场景中加入了Volume的对象,控制屏幕后特效Shader的运行 3.挪动了场景中煤油灯的位置,并且为煤油灯添加了会产生空气扰动使光范围发生变化的功能 4.为测试场景中的镜子添加了临时提示光边Shader
42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Experimental.Rendering.Universal;
|
|
|
|
public class LightController : MonoBehaviour
|
|
{
|
|
//控制灯光的火焰扰动 霄酱写的
|
|
public Light2D Light2D;
|
|
[Header("光半径")]
|
|
public float radiusCycle;
|
|
public float radiusRate;
|
|
[Header("光强度")]
|
|
public float intensityCycle;
|
|
public float intensityRate;
|
|
private float radiusOrigin;
|
|
private float radiusUpdate;
|
|
|
|
private float intensityOrigin;
|
|
private float intensityUpdate;
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
//获取所有数据的初始值
|
|
radiusOrigin = Light2D.pointLightOuterRadius;
|
|
intensityOrigin = Light2D.intensity;
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
radiusUpdate = radiusOrigin;
|
|
radiusUpdate = radiusCycle * Mathf.Sin(Time.fixedTime * Mathf.PI * radiusRate) + radiusOrigin;//计算简谐震荡后的数值
|
|
Light2D.pointLightOuterRadius = radiusUpdate;
|
|
|
|
intensityUpdate = intensityOrigin;
|
|
intensityUpdate = intensityCycle * Mathf.Sin(Time.fixedTime * Mathf.PI * intensityRate) + intensityOrigin;
|
|
Light2D.intensity = intensityUpdate;
|
|
|
|
}
|
|
}
|