50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using UnityEngine;
|
|
using Unheimlich.Interactions.Core;
|
|
using Unheimlich.Utility;
|
|
|
|
namespace Unheimlich.Gameplay.Environment
|
|
{
|
|
public class DoorInteractable : InteractableBase
|
|
{
|
|
[Header("Door Settings")]
|
|
public bool IsOpen = false;
|
|
[SerializeField] private float _openAngle = 90f;
|
|
[SerializeField] private float _animationDuration = 0.5f;
|
|
[SerializeField] private LeanTweenType _easeType = LeanTweenType.easeInOutQuad;
|
|
|
|
private Quaternion _closedRotation;
|
|
private Quaternion _openRotation;
|
|
|
|
protected virtual void Start()
|
|
{
|
|
_closedRotation = transform.rotation;
|
|
_openRotation = _closedRotation * Quaternion.Euler(0, _openAngle, 0);
|
|
|
|
InteractionText = IsOpen ? "Close" : "Open";
|
|
}
|
|
|
|
public override void Interact()
|
|
{
|
|
ToggleDoor();
|
|
}
|
|
|
|
public void ToggleDoor()
|
|
{
|
|
gameObject.CancelAllTweens();
|
|
|
|
if (!IsOpen)
|
|
{
|
|
TweenHelper.RotateLocal(gameObject, _openRotation.eulerAngles, _animationDuration, null, _easeType);
|
|
IsOpen = true;
|
|
InteractionText = "Close";
|
|
}
|
|
else
|
|
{
|
|
TweenHelper.RotateLocal(gameObject, _closedRotation.eulerAngles, _animationDuration, null, _easeType);
|
|
IsOpen = false;
|
|
InteractionText = "Open";
|
|
}
|
|
}
|
|
}
|
|
}
|