0

我有两个 GameObject,一个门和触发器。每个 GameObject 都有一个脚本,触发器有 PlayerDoorTrigger.js 检测玩家是否进入触发器。当门有 doorMove.js 时,点击会打开门。

我在将来自 PlayerDoorTrigger.js 的布尔值转换为来自 doorMove.js 的 if 语句时遇到问题。下面是两个脚本:

doorMove.js

var doorDynamic = false;

var playerTrigger:GameObject;


function Awake () {

}
function Start () {
    playerDoorTrigger.playerOnTrigger = true;
}

function Update () {
    if(Input.GetMouseButton(0)){
        doorDynamic=true;
    }
    if(doorDynamic == true){
        transform.Rotate(Vector3.up * Time.deltaTime*128);
    }
    }

function OnCollisionEnter(doorCol:Collision){
    if(doorCol.gameObject.tag=="Walls"){
        Debug.Log("POP");
        doorDynamic = false;
    }   
}

玩家门触发器

public var playerOnTrigger = false;

function OnTriggerEnter(trigger:Collider){
    if(trigger.gameObject.tag=="Player"){
        playerOnTrigger=true;
    }
}

function OnTriggerExit(trigger:Collider){
    if(trigger.gameObject.tag=="Player"){
        playerOnTrigger=false;
    }
}

尝试按照脚本参考使用 GetComponent 但没有运气。

请帮我解决这个问题,谢谢。

4

1 回答 1

1

您需要先获取PlayerDoorTrigger组件,然后才能使用它。这是一个假设并附加到同一个游戏对象的快速PlayerDoorTrigger示例doorMove

var playerDoorTrigger = GetComponent("PlayerDoorTrigger") as PlayerDoorTrigger;

if (playerDoorTrigger.playerOnTrigger) {
    Debug.Log("Huzzah, player trigger true.");
}

我假设您的两个脚本都在 UnityScript (javascript) 中。如果没有,您需要找到其他方法让 Unity 识别脚本类,以便您可以分配该类型的变量。

于 2013-10-22T13:03:11.570 回答