- Home /
Question by
Kyle_L · Apr 13, 2015 at 07:40 PM ·
raycastoptimizationdoor
Optimizing door script
So i'm having problems with this script and performance issues with this script and idk what to do.
using UnityEngine; using System.Collections;
public class DoorScript : MonoBehaviour {
//Door UI Name
public string doorInteractable = "Interact With Door";
public string doorInteractableOpen = "Open Door";
public string doorInteractableClose= "Close Door";
public string doorInteractableLocked= "Locked Door";
//If door is open
public bool isOpen = false;
public bool isLocked = false;
public bool autoClose = false;
public float autoCloseDelayTime = 5f;
private float autoCloseDelay;
//Audio
public AudioClip[] doorSounds;
public float audioPitch;
public float audioVolume;
public float doorOpenAngle = 90f;
public float doorCloseAngle = 0f;
public float smoothSpeed = 2f;
//delay
public float delayTime;
private float delay;
public GameObject door;
void Start ()
{
delay = delayTime;
autoCloseDelay = autoCloseDelayTime;
//Set Interact UI Open/Close
if (isOpen == false) {
doorInteractable = doorInteractableOpen;
}
if (isOpen == true) {
doorInteractable = doorInteractableClose;
}
if (isLocked == true) {
doorInteractable = doorInteractableLocked;
}
}
public void LockDoor(bool lockDoor) {
if (lockDoor == true) {
isLocked = true;
//door.transform.tag = "LockedDoor";
doorInteractable = doorInteractableLocked;
} else {
isLocked = false;
//door.transform.tag = "Door";
doorInteractable = doorInteractableOpen;
}
}
public void ChangeDoorState() {
if (isLocked == false) {
isOpen = !isOpen;
}
if (isOpen == true && isLocked == false) { //Opening
GetComponent<AudioSource>().pitch = audioPitch;
GetComponent<AudioSource>().volume = audioVolume;
GetComponent<AudioSource>().clip = doorSounds[0];
GetComponent<AudioSource>().Play();
delay = delayTime;
doorInteractable = doorInteractableClose;
}
if (isOpen == false && isLocked == false) { //Closing
GetComponent<AudioSource> ().pitch = audioPitch;
GetComponent<AudioSource> ().volume = audioVolume;
GetComponent<AudioSource> ().clip = doorSounds [1];
GetComponent<AudioSource> ().Play ();
delay = delayTime;
doorInteractable = doorInteractableOpen;
}
if (isLocked == true) { //Locked
//GetComponent<AudioSource>().pitch = audioPitch;
//GetComponent<AudioSource>().volume = audioVolume;
//GetComponent<AudioSource>().clip = doorSounds[2];
//GetComponent<AudioSource>().Play();;
}
}
void Update () {
if(isOpen == false) { //Closes Door
Quaternion targetRotation = Quaternion.Euler(0, doorCloseAngle, 0);
transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRotation, smoothSpeed * Time.deltaTime);
}
if(isOpen == true) { //Open Door
Quaternion targetRotation = Quaternion.Euler(0, doorOpenAngle, 0);
transform.localRotation = Quaternion.Slerp(transform.localRotation, targetRotation, smoothSpeed * Time.deltaTime);
if (autoClose == true) {
delay = delay - Time.deltaTime;
if (autoCloseDelay <= 0) {
isOpen = false;
autoCloseDelay = autoCloseDelayTime;
}
}
if (isLocked == true) {
isOpen = false;
doorInteractable = doorInteractableLocked;
} else {
doorInteractable = doorInteractableOpen;
}
}
if (autoClose == true && isOpen == true) {
autoCloseDelay = autoCloseDelay - Time.deltaTime;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
door that closes by itself 2 Answers
Help with key code!! 0 Answers
Raycasting fail 1 Answer
How to open doors on a hinge like a real door? 3 Answers
Player can't block door 0 Answers