Files
QuizzinMk5.1/Assets/Quiz/Scripts/Door/Door.cs

66 lines
1.4 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
using VRC.Udon.Common.Interfaces;
public class Door : UdonSharpBehaviour
{
[SerializeField] private Animator doorAnimator;
[SerializeField] private AudioSource doorAudioSource;
[UdonSynced] private bool isOpen = false;
[Header("Audio Clips")]
[SerializeField] private AudioClip doorOpenClip;
[SerializeField] private AudioClip doorCloseClip;
[SerializeField] private AudioClip doorLockedClip;
private void ToggleOpen()
{
if (Networking.IsOwner(gameObject))
{
isOpen = !isOpen;
doorAnimator.SetBool("isOpen", isOpen);
RequestSerialization();
}
else
{
SendCustomNetworkEvent(NetworkEventTarget.All, nameof(TryLocked));
}
}
public override void OnDeserialization()
{
doorAnimator.SetBool("isOpen", isOpen);
}
public void HandleInteraction()
{
ToggleOpen();
}
public void PlayOpenSound()
{
doorAudioSource.PlayOneShot(doorOpenClip);
}
public void PlayCloseSound()
{
doorAudioSource.PlayOneShot(doorCloseClip);
}
public void PlayLockedSound()
{
doorAudioSource.PlayOneShot(doorLockedClip);
}
public void TryLocked()
{
doorAnimator.SetTrigger("tryLocked");
}
}