Files
Temp.BattleRoyale.Map.Unity/Assets/HPA/Audio/AmbianceAdaptation/AmbianceVolumeInsideOutside.cs
CortexCore a379dc5cd3 1
2024-05-13 01:28:33 +08:00

90 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace HP.Generics
{
public class AmbianceVolumeInsideOutside : MonoBehaviour
{
public float outsideVolume = .137f;
public float insideVolume = .1f;
public AudioSource aSource;
public bool isOutside = true;
// Start is called before the first frame update
private void Update()
{
Detection();
}
IEnumerator NewVolumeRoutine(float newVolume)
{
isOutside = !isOutside;
float t = 0;
float duration = .5f;
float startValue = aSource.volume;
while (t < 1)
{
t += Time.deltaTime / duration;
aSource.volume = Mathf.Lerp(startValue, newVolume, t);
yield return null;
}
yield return null;
}
Vector3 lastPos = new Vector3();
bool lastCheckHitDetected = false;
void Detection()
{
RaycastHit hit;
if (Physics.Linecast(transform.position, lastPos, out hit))
{
if(!lastCheckHitDetected)
ChangeVolume(hit);
lastCheckHitDetected = true;
}
else
{
lastCheckHitDetected = false;
}
lastPos = transform.position;
}
void ChangeVolume(RaycastHit hit)
{
if (hit.transform.GetComponent<EyeAdaptTriggerTag>())
{
//Debug.Log("Check)");
if (aSource && isOutside)
{
StopAllCoroutines();
StartCoroutine(NewVolumeRoutine(insideVolume));
}
else if (aSource && !isOutside)
{
StopAllCoroutines();
StartCoroutine(NewVolumeRoutine(outsideVolume));
}
}
}
}
}