using UnityEngine; public class SlideDoorOpenNew : MonoBehaviour { public Camera cam; public float RayDistance = 1.7f; public float maxD = 1.7f; private Ray ray; private bool open; public float smooth = 1f; public bool IsZDirection; private float x; private float xr; private float z; private float zr; public float Distance = 1.3f; private float start; private float end; private float startz; private float endz; private void Start() { if (IsZDirection) { startz = base.transform.position.z; endz = base.transform.position.z - Distance; } else { start = base.transform.position.x; end = base.transform.position.x - Distance; } } private void Update() { if (IsZDirection) { zr = Mathf.Lerp(base.transform.position.z, startz, Time.deltaTime); z = Mathf.Lerp(base.transform.position.z, endz, Time.deltaTime); if (open) { base.transform.position = new Vector3(base.transform.position.x, base.transform.position.y, z * smooth); } else { base.transform.position = new Vector3(base.transform.position.x, base.transform.position.y, zr * smooth); } } else { xr = Mathf.Lerp(base.transform.position.x, start, Time.deltaTime); x = Mathf.Lerp(base.transform.position.x, end, Time.deltaTime); if (open) { base.transform.position = new Vector3(x * smooth, base.transform.position.y, base.transform.position.z); } else { base.transform.position = new Vector3(xr * smooth, base.transform.position.y, base.transform.position.z); } } if (Input.GetKeyDown("f")) { 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) { open = !open; } } } }