using UnityEngine; using UnityEngine.Experimental.Rendering.Universal; public class BrokenDoor : MonoBehaviour { public Light2D doorStatusLight; public float xMovement, yMovement; public float speedMin, speedMax; private float currentSpeed; private Vector3 moveTarget, startingPos; private float startTime, journeyLength; private AudioSource aSource; private void Awake() { aSource = GetComponent<AudioSource>(); } private void Start() { moveTarget = transform.position; moveTarget = new Vector3(transform.position.x + xMovement, transform.position.y + yMovement, transform.position.z); startingPos = transform.position; currentSpeed = speedMin; doorStatusLight.color = Color.green; startTime = Time.time; journeyLength = Vector3.Distance(startingPos, moveTarget); } private void Update() { float distCovered = (Time.time - startTime) * currentSpeed; float fracJourney = distCovered / journeyLength; transform.position = Vector3.LerpUnclamped(transform.position, moveTarget, fracJourney); if (transform.position == moveTarget) { aSource.Play(); if (doorStatusLight.color == Color.red) doorStatusLight.color = Color.green; else doorStatusLight.color = Color.red; Vector3 tempPos = startingPos; startingPos = moveTarget; moveTarget = tempPos; startTime = Time.time; currentSpeed = Random.Range(speedMin, speedMax); } } }