I have a door which I can open with a key. But I wanna make 2 doors with 2 diffrent keys. Here are the Scripts.
This one is the Script on the door: `
//Booleans:
var IsOpen : boolean = false;
var smooth = 2.0;
var DoorOpenAngle = 90.0;
var CanOpen : boolean = false;
var NeedKey : boolean = true;
private var enter : boolean;
//Audios:
var Locked : AudioClip;
var Open : AudioClip;
var Close : AudioClip;
//Other:
var KeyScript : GameObject;
private var openRot : Vector3;
private var defaultRot : Vector3;
function Update () {
if(Input.GetKeyUp(KeyCode.E) && !IsOpen && CanOpen && !NeedKey)
{
Opening();
IsOpen = true;
audio.clip = Open;
audio.PlayOneShot(Open);
}
else if(Input.GetKeyUp(KeyCode.E) && IsOpen && CanOpen && !NeedKey)
{
Closing();
IsOpen = false;
audio.clip = Close;
audio.PlayOneShot(Close);
}
else if(Input.GetKeyUp(KeyCode.E) && CanOpen && NeedKey)
{
audio.clip = Locked;
audio.Play();
}
if(KeyScript.GetComponent(Key).HaveKey == true)
{
NeedKey = false;
}
}
function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}
function Opening()
{
for (var i = 0; i < 35; i++ )
{
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
yield WaitForSeconds(0.01);
}
}
function Closing()
{
for (var i = 0; i < 35; i++)
{
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
yield WaitForSeconds(0.01);
}
}
function OnTriggerEnter (other : Collider)
{
if(other.gameObject.tag == "Player")
{
CanOpen = true;
}
}
function OnTriggerExit (other : Collider)
{
if(other.gameObject.tag == "Player")
{
CanOpen = false;
}
}
@script RequireComponent(AudioSource)`
This Script is on the MainCamera: ` var ShowText : boolean = false;
var Text : String = "You picked up a key";
var other : GameObject;
function Update () {
var hit : RaycastHit;
var ray : Ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0));
var fwd = transform.TransformDirection (Vector3.forward);
Debug.DrawRay(transform.position, fwd * Length, Color.green);
if(Physics.Raycast(ray, hit, Length))
{
hitObject = hit.collider.gameObject;
if(hitObject.gameObject.tag == "Key")
{
other.GetComponent(Crosshair).TextureChange();
if(Input.GetKeyUp(KeyCode.E))
{
GetKey();
Destroy(hitObject);
}
}
else if(hitObject.gameObject.tag == "Untagged")
{
other.GetComponent(Crosshair).BackToNormal();
}
}
else if(!Physics.Raycast(transform.position, transform.forward, hit, Length))
{
other.GetComponent(Crosshair).BackToNormal();
}
}
function GetKey(){
HaveKey = true;
ShowText = true;
yield WaitForSeconds(3);
ShowText = false;
}
function OnGUI(){
if(ShowText)
{
GUI.Label(Rect(Screen.width /2 -62.5, Screen.height /2 + 50, 200, 100), Text);
}
}`
And this Script is on the MainCamera too:
var Length : float = 3;
static var HaveKey : boolean = false;
var ShowText : boolean = false;
var Text : String = "You picked up a key";
var other : GameObject;
function Update () {
var hit : RaycastHit;
var ray : Ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0));
var fwd = transform.TransformDirection (Vector3.forward);
Debug.DrawRay(transform.position, fwd * Length, Color.green);
if(Physics.Raycast(ray, hit, Length))
{
hitObject = hit.collider.gameObject;
if(hitObject.gameObject.tag == "Key")
{
other.GetComponent(Crosshair).TextureChange();
if(Input.GetKeyUp(KeyCode.E))
{
GetKey();
Destroy(hitObject);
}
}
else if(hitObject.gameObject.tag == "Untagged")
{
other.GetComponent(Crosshair).BackToNormal();
}
}
else if(!Physics.Raycast(transform.position, transform.forward, hit, Length))
{
other.GetComponent(Crosshair).BackToNormal();
}
}
function GetKey(){
HaveKey = true;
ShowText = true;
yield WaitForSeconds(3);
ShowText = false;
}
function OnGUI(){
if(ShowText)
{
GUI.Label(Rect(Screen.width /2 -62.5, Screen.height /2 + 50, 200, 100), Text);
}
}`
The last scipt is for Crosshair.
How can I make 2 diffrent keys for 2 diffrent doors now ?