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