- Home /
 
Door Script Help!
I really can't figure it out how to solve this script. I want to make a door script without Animation because it's too complicated, i use iTween. What i want to ask is
How to make the door require a key to open it?
I have many same door in my scene, and i made it an array but what i got is "InvalidCastException: Cannot cast from source type to destination type. InputMan.Start () (at Assets/SKIPPER'S/Scripts/InputMan.js:9)"
i have 3 scripts below. first. Door.js it's attached to pCube (un-triggered box Collider)
 enum DoorStates {open, unlocked, locked};
 var doorState : DoorStates;
 var doorShutSound : AudioClip;
 var doorOpenSound : AudioClip;
 var timer : float;
 var rotation : float;
 var direction : String;
 var originalRotation : float;
 var originalDirection : String;
 var requireKey : boolean;
 var howMuchKey : int;
 
 function Awake(){
     doorState = DoorStates.locked;
 }
 
 function Open(){
     audio.PlayOneShot(doorOpenSound);
     iTween.rotateTo(gameObject, {direction:rotation, "time":timer});
     doorState = DoorStates.open;
 }
 
 function Closed(){
     audio.PlayOneShot(doorShutSound);
     iTween.rotateTo(gameObject, {originalDirection:originalRotation, "time":timer});
     doorState = DoorStates.locked;
 }
 
               And this is Doorscript.js attached to triggered box collider
 var doorScript : Door;
 
 function OnTriggerEnter (col : Collider){
 
     if((col.gameObject.tag == "Player") && (doorScript.doorState == DoorStates.unlocked)){
 
         BroadcastMessage("Open");
 
     }
 
 }
 
 function OnTriggerExit (other:Collider){
 
     if(other.gameObject.tag == "Player"){    
 
         if(doorScript.doorState == DoorStates.open || doorScript.doorState == DoorStates.unlocked){
 
             //BroadcastMessage("Closed");
 
         }
 
     }
 
 }
 
               And this is the last one. InputMan.js attached to First Person Controller
 var doorScript : Door[];
 
 function Start(){
     doorScript = gameObject.GetComponents (Door);
 }
 
 function Update(){
 
 var hit : RaycastHit;
 if(Physics.Raycast(transform.position, transform.forward, hit, 2)){
 
 if (Input.GetKeyUp("e")){
 for(var dr : Door in doorScript){
 if(hit.collider.gameObject.tag == "Door"){
 if(dr.doorState == DoorStates.locked) dr.doorState = DoorStates.unlocked;
 else if (dr.doorState == DoorStates.unlocked) dr.Open();
 
 }
 }
 
              Your answer
 
             Follow this Question
Related Questions
Need help cycling through an array with a 'for' loop. 0 Answers
iTween: Cannot cast from source type to destination type. 1 Answer
Push down GUI everytime for loop cycles through Array 1 Answer
Javascript for loops and Arrays. 2 Answers
Find children and set them all to be kinematic rigidbodies 1 Answer