Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/SlideDoorOpenNew.cs
2026-03-04 10:03:45 +08:00

89 lines
1.8 KiB
C#

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