首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OnTriggerEnter / OnTriggerStay多次触发,没有第二次调用

OnTriggerEnter / OnTriggerStay多次触发,没有第二次调用
EN

Game Development用户
提问于 2015-11-06 14:09:04
回答 3查看 4.4K关注 0票数 4

我正在做一个功能,当玩家通过一扇门时,屏幕上会弹出一个消息。

我有几个问题:Debug.Log给我从2到6个日志,当我通过对撞机平面传递,当我回到同一个对撞机平面时,脚本不会被第二次调用。

我想要实现的是,Debug.Log只给了我一个日志,每次我通过对撞机,脚本就会再次运行。这是我的密码:

代码语言:javascript
运行
复制
function OnTriggerEnter (other : Collider) { //OnTriggerStay gives the same result
    if (other.tag == "Player") {
    isColliding = true;
  } else {
    isColliding = false;
  }
}
function OnGUI() { 
  if (isColliding) {
      Debug.Log(isColliding);
    //Application.ExternalCall('hive.OpenHiveAlert', 'test');
  } 
}
function OnTriggerExit() {
    Destroy(this);
}

任何帮助都将不胜感激,谢谢。

EN

回答 3

Game Development用户

回答已采纳

发布于 2015-11-10 20:53:21

OnTriggerExit没有以任何可定位的形式工作,为了只触发我的函数一次并再次“重用它”,我所做的是在折叠代码中:

代码语言:javascript
运行
复制
#pragma strict

var isTrigger = false;

function OnTriggerEnter (other : Collider) {
    if (other.tag == "Player") {
        if (!isTrigger) {
            Application.ExternalCall('hive.OpenHiveAlert', 'test');
            isTrigger = true;

            yield WaitForSeconds (10);
            isTrigger = false;
        }
    }
}

这可能不是理想的代码,但我不能在这上面花更多的时间.谢谢你的时间,阿托斯和杰克。:)

票数 0
EN

Game Development用户

发布于 2015-11-07 12:16:34

之所以会发生这种情况,是因为您不是在调用Debug.Log之后调用OnTriggerEnter,而是在OnGUI中调用它。OnTriggerEnter只在您进入时才被调用,这意味着它只被调用一次,而OnGUI每帧调用一次(多次),与任何这样的物理事件无关。

只要你的玩家在对撞机内(因为一旦你进入对撞机,isColliding就会变成真),你就永远不会重置它。只有当您退出时,该对象才会被销毁,并且您将不再看到任何调用。一旦开始绘制实际文本,您可能会得到您想要的结果(因为只要播放机在对撞机内,它就会绘制GUI)。

如果只需要一个Debug.Log,则应该将其放在OnTriggerEnter方法中If -语句的正文中。

票数 1
EN

Game Development用户

发布于 2015-11-07 14:56:46

关于OnGUI,阿托斯是正确的。如果您真的想将它限制为一条Debug.Log消息,您可以在OnGUI中禁用bool --将它当作一个标志,直到OnGUI第一次响应为止。(尽管正如Athos所指出的,一旦您真正开始正确地显示GUI,您就会没事的)

还请注意,由于OnTriggerEnter中的of语句,如果有其他东西进入门触发器,它将禁用isColliding标志,这对我来说没有多大意义,因为玩家的碰撞状态并不真正取决于是否有其他东西进入门口

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/110907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档