using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Playables; namespace InfallibleCode { public class LockpickDoor : MonoBehaviour, IInteractable { [SerializeField] private PlayableDirector _lockpickDoorCutscene; [SerializeField] private Transform _lerpPosition; private bool CanLockpickDoor; private bool LockPickDone; private float _lerpTime; private void OnTriggerStay(Collider col) { if (col.gameObject.tag == "Player") { CanLockpickDoor = true; } } private void OnTriggerExit(Collider col) { if (col.gameObject.tag == "Player") { CanLockpickDoor = false; } } public void LockpickDoorUpdate() { if (CanLockpickDoor && !LockPickDone) { LockPickDone = true; StartCoroutine(LerpPlayerInPos()); } } public void Interact() { LockpickDoorUpdate(); } IEnumerator LerpPlayerInPos() { while (_lerpTime <= 1f) { _lerpTime += 0.5f * Time.deltaTime; PlayerManager.GetInstance().playerGameObj.transform.localPosition = Vector3.Lerp(PlayerManager.GetInstance().playerGameObj.transform.localPosition, _lerpPosition.localPosition, _lerpTime); PlayerManager.GetInstance().playerGameObj.transform.rotation = Quaternion.Lerp(PlayerManager.GetInstance().playerGameObj.transform.rotation, _lerpPosition.rotation, _lerpTime); _lockpickDoorCutscene.Play(); yield return null; } } } }