using System.Collections; using UnityEngine; public class SlideDoorOpenZ : MonoBehaviour { public Camera cam; public float RayDistance = 1.7f; public float maxD = 1.7f; private Ray ray; private bool open; public int angle = 14; private int hide = 1; private bool isopen; public float smooth = 0.1f; public float delay = 0.03f; private void Update() { if (!Input.GetKeyDown("f")) { return; } ray = cam.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out var hitInfo, RayDistance) && hitInfo.transform.tag == "Door" && Vector3.Distance(hitInfo.transform.position, base.transform.position) < maxD && !isopen) { open = !open; if (open) { StartCoroutine("one"); } else { StartCoroutine("two"); } } } private IEnumerator one() { if (!isopen) { while (hide < angle) { base.transform.position += new Vector3(0f, 0f, 0f - smooth); hide++; isopen = true; yield return new WaitForSeconds(delay); } } isopen = false; hide = 1; yield return null; } private IEnumerator two() { if (!isopen) { while (hide < angle) { base.transform.position += new Vector3(0f, 0f, smooth); hide++; isopen = true; yield return new WaitForSeconds(delay); } } isopen = false; hide = 1; yield return null; } }