我已经在Unity引擎工程师中编写了代码,以使用单个钥匙打开锁定的锁
我将锁定脚本和密钥脚本提供给密钥对象
但是问题是我的代码无法正常工作,因为我没有收到任何错误
为了说明,我不得不说我创建了一个空对象并将其放置在其中,并将其分配给门的脚本。
对于键,我还为该键分配了脚本
这是锁门脚本:
var IsOpen : boolean = false;
var CanOpen : boolean = false;
var NeedKey : boolean = true;
var DoorInt : int;
var Locked : AudioClip;
var Open : AudioClip;
var Volume : float = 0.5;
var KeyScript : GameObject;
function Start ()
{
audio.volume = Volume;
}
function Update ()
{
if(Input.GetKeyUp(KeyCode.E) && !IsOpen && CanOpen && !NeedKey)
{
Opening();
IsOpen = true;
audio.clip = Open;
audio.Play();
}
else if(Input.GetKeyUp(KeyCode.E) && IsOpen && CanOpen && !NeedKey)
{
Closing();
IsOpen = false;
}
else if(Input.GetKeyUp(KeyCode.E) && CanOpen && NeedKey)
{
audio.clip = Locked;
audio.Play();
}
if(KeyScript.GetComponent(Key).HaveKey == true)
{
NeedKey = false;
}
}
function Opening()
{
for (var i = 0; i < 100; i++)
{
transform.Rotate(0,0.9,0);
yield WaitForSeconds(0.01);
}
}
function Closing()
{
for (var i = 0; i < 100; i++)
{
transform.Rotate(0,-0.9,0);
yield WaitForSeconds(0.01);
audio.clip = Open;
audio.Play();
}
}
function OnTriggerEnter (other : Collider)
{
if(other.gameObject.tag == "Player")
{
CanOpen = true;
}
}
function OnTriggerExit (other : Collider)
{
if(other.gameObject.tag == "Player")
{
CanOpen = false;
}
}
这是关键脚本:
static var HaveKey : boolean = false;
var Doortoopen : GameObject;
function Start ()
{
}
function Update ()
{
}
function OnTriggerStay (Player : Collider)
{
if(Input.GetKey(KeyCode.E))
{
HaveKey = true;
Doortoopen.GetComponent(LockedDoor).enabled = true;
}
}
答案 0 :(得分:2)
根据注释,对象到变量的分配不正确。
这两个脚本中都有一个gameobject变量
当您将关键段代码分配给关键对象时,变量会在检查器部分中创建一个空白空间
此变量:
var Doortoopen : GameObject;
您必须用门物体填充这个空白空间
例如,在这张照片中,palyer对象是一个创建的变量,可以分配给该对象
http://uupload.ir/files/27sg_the-unity3d-inspector-component-of-the-event-script.png