So, I got a great door script that has a coroutine that shut the door a few seconds after player walks away but I want to randomize the wait time on the close door coroutine any ideas how to do that?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorScript : Interactable
{
[Header("Functional Options")]
[SerializeField] private bool isOpen = false;
[SerializeField] private bool canBeInteractedWith = true;
[SerializeField] private Animator anim;
[SerializeField] private new AudioSource audio;
[SerializeField] public AudioClip SoundToPlay;
private void Start()
{
anim = GetComponent<Animator>();
audio = GetComponent<AudioSource>();
}
public override void OnFocus()
{
}
public override void OnInteract()
{
if (canBeInteractedWith)
{
isOpen = !isOpen;
Vector3 doorTransformDirection = transform.TransformDirection(Vector3.forward);
Vector3 playerTransformDirection = FirstPersonController.instance.transform.position - transform.position;
float dot = Vector3.Dot(doorTransformDirection, playerTransformDirection);
anim.SetFloat("dot", dot);
anim.SetBool("isOpen", isOpen);
audio.Play();
StartCoroutine(AutoClose());
}
}
public override void OnLoseFocus()
{
}
private IEnumerator AutoClose()
{
while (isOpen)
{
yield return new WaitForSeconds(11);
if(Vector3.Distance(transform.position, FirstPersonController.instance.transform.position) > 6)
{
isOpen = false;
anim.SetFloat("dot", 0);
anim.SetBool("isOpen", isOpen);
audio.Play();
}
}
}
}