гигантский ассет
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using UnityEngine;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using UHFPS.Tools;
|
||||
using ThunderWire.Attributes;
|
||||
|
||||
namespace UHFPS.Runtime
|
||||
{
|
||||
[InspectorHeader("Sound Trigger")]
|
||||
public class SoundTrigger : MonoBehaviour, IInteractStart, ISaveable
|
||||
{
|
||||
public enum TriggerTypeEnum { Interact, Trigger, Event }
|
||||
public enum UseTypeEnum { Once, MoreTimes }
|
||||
|
||||
public TriggerTypeEnum TriggerType;
|
||||
public UseTypeEnum UseType;
|
||||
|
||||
[Header("Sound")]
|
||||
public SoundClip TriggerSound;
|
||||
|
||||
private bool isPlayed = false;
|
||||
|
||||
public void InteractStart()
|
||||
{
|
||||
if(TriggerType == TriggerTypeEnum.Interact)
|
||||
{
|
||||
PlaySound();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (TriggerType == TriggerTypeEnum.Trigger && other.CompareTag("Player"))
|
||||
{
|
||||
PlaySound();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (TriggerType == TriggerTypeEnum.Trigger && UseType == UseTypeEnum.MoreTimes && other.CompareTag("Player"))
|
||||
{
|
||||
isPlayed = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void PlaySound()
|
||||
{
|
||||
if (isPlayed)
|
||||
return;
|
||||
|
||||
GameTools.PlayOneShot3D(transform.position, TriggerSound);
|
||||
isPlayed = true;
|
||||
}
|
||||
|
||||
public StorableCollection OnSave()
|
||||
{
|
||||
return new StorableCollection()
|
||||
{
|
||||
{ nameof(isPlayed), isPlayed }
|
||||
};
|
||||
}
|
||||
|
||||
public void OnLoad(JToken data)
|
||||
{
|
||||
isPlayed = (bool)data[nameof(isPlayed)];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user