Files
HauntedBloodlines/Assets/Scripts/Scripted Events/LockpickDoor.cs
2025-05-29 22:31:40 +03:00

57 lines
1.8 KiB
C#

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;
}
}
}
}