Files
2026-06-04 14:27:16 +03:00

48 lines
1.2 KiB
C#

using UnityEngine;
public class Door : MonoBehaviour
{
public Vector3 openOffset = Vector3.up * 3f;
public float openSpeed = 2f;
public bool isOpen;
private Vector3 closedPosition;
private Vector3 targetPosition;
private Collider doorCollider;
private void Awake()
{
closedPosition = transform.position;
targetPosition = closedPosition;
doorCollider = GetComponent<Collider>();
}
private void Update()
{
// MoveTowards даёт предсказуемое плавное открытие без физики и аниматора.
transform.position = Vector3.MoveTowards(transform.position, targetPosition, openSpeed * Time.deltaTime);
if (isOpen && doorCollider != null && Vector3.Distance(transform.position, targetPosition) < 0.02f)
{
doorCollider.enabled = false;
}
}
public void Open()
{
isOpen = true;
targetPosition = closedPosition + openOffset;
}
public void Close()
{
isOpen = false;
targetPosition = closedPosition;
if (doorCollider != null)
{
doorCollider.enabled = true;
}
}
}