81 lines
2.3 KiB
C#
81 lines
2.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Unity.XR.CoreUtils;
|
|
using UnityEngine;
|
|
|
|
public class ElevatorOuter : MonoBehaviour
|
|
{
|
|
public ElevatorBox box;
|
|
|
|
public int floor;
|
|
public Transform boxPos;
|
|
|
|
public GameObject leftDoor;
|
|
public Transform leftDoorOpenPos;
|
|
public Transform leftDoorClosedPos;
|
|
|
|
public GameObject rightDoor;
|
|
public Transform rightDoorOpenPos;
|
|
public Transform rightDoorClosedPos;
|
|
|
|
private float doorOpenTime = 4f;
|
|
private float doorCloseTime = 5.6f;
|
|
|
|
public ElevatorStatusPlate statusPlate;
|
|
public AudioSource arrivalBeeper;
|
|
|
|
private void Start()
|
|
{
|
|
doorOpenTime = box.doorOpenTime;
|
|
doorCloseTime = box.doorCloseTime;
|
|
}
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
Debug.Log("Something entered call area");
|
|
if (other.GetComponent<XROrigin>() == null && other.GetComponent<KbmController>() == null) return;
|
|
StartCoroutine(box.callElevator(floor));
|
|
Debug.Log("Player entered call area");
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
Debug.Log("Something entered call area");
|
|
if (other.GetComponent<XROrigin>() == null && other.GetComponent<KbmController>() == null) return;
|
|
box.interestExpired();
|
|
Debug.Log("Player exited call area");
|
|
}
|
|
public void CloseDoors()
|
|
{
|
|
StartCoroutine(MoveDoors(leftDoor, leftDoorClosedPos, rightDoor, rightDoorClosedPos, doorCloseTime));
|
|
|
|
|
|
}
|
|
public void OpenDoors()
|
|
{
|
|
arrivalBeeper.Play();
|
|
Debug.Log("Outer Doors opened");
|
|
StartCoroutine(MoveDoors(leftDoor, leftDoorOpenPos, rightDoor, rightDoorOpenPos, doorOpenTime));
|
|
|
|
}
|
|
|
|
private IEnumerator MoveDoors(GameObject left, Transform targetLeft, GameObject right, Transform targetRight, float moveTime)
|
|
{
|
|
Vector3 startL = left.transform.position;
|
|
Vector3 startR = right.transform.position;
|
|
float t = 0;
|
|
|
|
while (t < 1f)
|
|
{
|
|
t += Time.deltaTime / moveTime;
|
|
float easedT = Mathf.SmoothStep(0f, 1f, t); // ease in/out
|
|
left.transform.position = Vector3.Lerp(startL, targetLeft.position, easedT);
|
|
right.transform.position = Vector3.Lerp(startR, targetRight.position, easedT);
|
|
yield return null;
|
|
}
|
|
Debug.Log("Outer Doors moved");
|
|
}
|
|
|
|
|
|
}
|
|
|