57 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |