using Ktyl.Util; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ArrowWall : MonoBehaviour { // delay between trap triggering and firing [SerializeField] private float _delay = 1.0f; [SerializeField] private TrapSettings _settings; [SerializeField] private ParticleSystem _particles; [SerializeField] private Killbox _killbox; private float? _triggered = null; [SerializeField] private SerialFloat objectTimeScale; public void Trigger() { // TODO: pressure plate 'click' sound // set triggered time _triggered = Time.time; } private void Update() { if (!_triggered.HasValue) return; var elapsed = Time.time - _triggered.Value; // TODO: implications for time freeze if (elapsed > _delay && objectTimeScale!=0) { // TODO: arrow whoosh noises FMODUnity.RuntimeManager.PlayOneShot(_settings.ArrowWall.FMODEvent, transform.position); _particles.Play(); // kill player _killbox.KillPlayer(); Reset(); } } private void LateUpdate() { if (!_triggered.HasValue) return; if (_settings.SafeTime > _settings.ArrowWall.SafeResetTime) { Reset(); } } public void Reset() { _triggered = null; } }