49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class GarageDoorOpen : MonoBehaviour
|
|
{
|
|
public float smooth = 1f;
|
|
|
|
public float angle = 90f;
|
|
|
|
public Camera cam;
|
|
|
|
public float RayDistance = 1.7f;
|
|
|
|
public float maxD = 1.7f;
|
|
|
|
private Ray ray;
|
|
|
|
public bool open;
|
|
|
|
private Quaternion start;
|
|
|
|
private Quaternion end;
|
|
|
|
private void Start()
|
|
{
|
|
start = Quaternion.Euler(0f, base.transform.rotation.eulerAngles.y, base.transform.rotation.eulerAngles.z);
|
|
end = Quaternion.Euler(0f - angle, base.transform.rotation.eulerAngles.y, base.transform.rotation.eulerAngles.z);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (open)
|
|
{
|
|
base.transform.rotation = Quaternion.Slerp(base.transform.rotation, end, Time.deltaTime * smooth);
|
|
}
|
|
else
|
|
{
|
|
base.transform.rotation = Quaternion.Slerp(base.transform.rotation, start, Time.deltaTime * smooth);
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|