如何显示GUI按钮,一旦第一个人与一个对象碰撞



我正在为孩子们创建一个教育虚拟行走,我有一个小问题,如何显示一个按钮,一旦我的第一人称碰撞在一个立方体/对象。

下面是我的代码:
#pragma strict
var timer : int;
var move : GUI;
function Start () {
}
timer = Time.deltaTime;
function OnCollisionEnter (obj: Collision) {
    if (obj.collider.name == "Cube")
    {
        GUI.Button(Rect(0,0,200,100), 'Button');
    }
}

我不太了解Unity Script也不知道你的代码是这样工作的还是你粘贴了一些不同的东西在你的组件上所以我将用c#写一个方法但是你可以很容易地为US进行调整:

public bool showButton = false
public Rect buttonRect = new Rect(0, 0, 200, 100);
void OnGUI() {
    if(show) {
        if(GUI.Button(buttonRect, "Button") {
            // do what you need here...
            show = false; //after click and do what you need hide the button again
        }
    }
}
void OnCollisionEnter(Collision collision) {
    if (collision.gameObject.tag == "Player") {
        show = true;
    }
}

禁用碰撞器上的任何触发器,我认为如果OnTrigger进入OnCollisionEnter将永远不会被调用(你可以很容易地调试它以授予你的OnCollisionEnter正在被调用)…

注意:我已经调整了"玩家"标签,所以你需要将其附加到你的立方体上,如果你想在你的玩家上使用它,只需在你的立方体上添加一些你想要测试的标签(我没有使用名称,因为我真的不知道unity将如何处理它,通常它是使用标签来做这种碰撞测试)…

ps:我现在无法测试它,所以如果它仍然抛出错误,请粘贴到这里。

相关内容

最新更新