如何在unity3d

时间:2019-05-13 05:57:51

标签: javascript unity3d game-engine

我已经在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;
    }
}

1 个答案:

答案 0 :(得分:2)

根据注释,对象到变量的分配不正确。

这两个脚本中都有一个gameobject变量

当您将关键段代码分配给关键对象时,变量会在检查器部分中创建一个空白空间

此变量:

var Doortoopen : GameObject;

您必须用门物体填充这个空白空间

例如,在这张照片中,palyer对象是一个创建的变量,可以分配给该对象

http://uupload.ir/files/27sg_the-unity3d-inspector-component-of-the-event-script.png