- Home /
Question by
jbruce1380 · Oct 27, 2020 at 07:37 PM ·
c#collisiondoor
Pausing Door Corountine During Collision
I have a door script, it works perfectly, but I would like the door to stop opening or closing when the player is touching it. I tried doing OnTriggerEnter & Exit, but then the player was able to walk through the door, I'm hoping someone can nudge me in the right direction. Here's my script: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class DoorLogic : MonoBehaviour { public float TheDistance;
public bool DoorStatus;
bool Colliding;
public GameObject Player;
public GameObject Door;
public Text GameText;
public Quaternion OpenPosition;
public Quaternion ClosedPosition;
void Start()
{
DoorStatus = false;
ClosedPosition = Door.transform.rotation;
OpenPosition = Quaternion.Euler(0,0,0);
}
void OnMouseOver()
{
TheDistance = Vector3.Distance(Player.transform.position, Door.transform.position);
if (TheDistance <= 2.5)
{
GameText.gameObject.SetActive(true);
if (DoorStatus == false)
{
if (Input.GetButtonDown("Action"))
{
StopCoroutine("CloseDoor");
StartCoroutine("OpenDoor");
DoorStatus = true;
}
}
else if (DoorStatus == true)
{
if (Input.GetButtonDown("Action"))
{
StopCoroutine("OpenDoor");
StartCoroutine("CloseDoor");
DoorStatus = false;
}
}
}
else if (TheDistance > 2.5)
{
GameText.gameObject.SetActive(false);
}
}
void OnMouseExit()
{
GameText.gameObject.SetActive(false);
}
IEnumerator OpenDoor()
{
float OpenDuration = 0.80F;
float OpenTime = 0;
Quaternion CurrentPosition = Door.transform.rotation;
while (OpenTime < OpenDuration)
{
Door.transform.rotation = Quaternion.Slerp(CurrentPosition, OpenPosition, OpenTime / OpenDuration);
OpenTime += Time.deltaTime;
yield return null;
}
}
IEnumerator CloseDoor()
{
float CloseDuration = 0.80F;
float CloseTime = 0;
Quaternion CurrentPosition = Door.transform.rotation;
while (CloseTime < CloseDuration)
{
Door.transform.rotation = Quaternion.Slerp(CurrentPosition, ClosedPosition, CloseTime / CloseDuration);
CloseTime += Time.deltaTime;
yield return null;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Door Not Colliding 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Take health from enemy 3 Answers
Question about collision 2 Answers