我有两个GameObject,一个门和一个触发器。每个GameObject都有一个脚本,触发器有PlayerDoorTrigger.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;
}
}
PlayerDoorTrigger
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但没有运气的脚本参考。
请帮我解决这个问题,谢谢。
答案 0 :(得分:1)
您需要先获取PlayerDoorTrigger
组件才能使用它。以下是假设PlayerDoorTrigger
和doorMove
附加到同一游戏对象的快速示例:
var playerDoorTrigger = GetComponent("PlayerDoorTrigger") as PlayerDoorTrigger;
if (playerDoorTrigger.playerOnTrigger) {
Debug.Log("Huzzah, player trigger true.");
}
我假设你的两个脚本都是UnityScript(javascript)。如果没有,您需要find other ways让Unity识别脚本类,这样您就可以分配该类型的变量。