first commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user