You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity碰撞触发Alert重复弹出,如何实现2秒内仅触发一次?

解决Unity越界碰撞重复弹出提醒的问题

针对你遇到的重复弹出提醒问题,这里提供两种可行的解决方案:

方案一:仅显示一次提醒并控制冷却时间

通过添加状态标记和协程,确保2秒内只触发一次提醒:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PixelCrushers.DialogueSystem;

public class OutOfBounds : MonoBehaviour
{
    public string message;
    // 标记是否处于提醒冷却状态
    private bool isAlertCooldown = false;

    void Start()
    {
        gameObject.GetComponent<Renderer>().enabled = false;
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Player" && !isAlertCooldown)
        {
            DialogueManager.ShowAlert(message);
            StartCoroutine(AlertCooldownCoroutine());
        }
    }

    // 2秒冷却协程
    private IEnumerator AlertCooldownCoroutine()
    {
        isAlertCooldown = true;
        yield return new WaitForSeconds(2f);
        isAlertCooldown = false;
    }
}

核心逻辑:

  • 用isAlertCooldown变量标记当前是否处于冷却状态,避免重复触发
  • 触发碰撞时仅在未冷却时显示提醒
  • 通过协程控制2秒后重置冷却状态,允许后续再次触发

方案二:禁用碰撞器2秒避免重复检测

直接在触发碰撞后禁用碰撞器,2秒后重新启用:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PixelCrushers.DialogueSystem;

public class OutOfBounds : MonoBehaviour
{
    public string message;
    // 缓存碰撞体组件,提升性能
    private Collider _collider;

    void Start()
    {
        gameObject.GetComponent<Renderer>().enabled = false;
        _collider = GetComponent<Collider>();
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Player" && _collider.enabled)
        {
            DialogueManager.ShowAlert(message);
            StartCoroutine(DisableColliderCoroutine());
        }
    }

    // 禁用碰撞体2秒的协程
    private IEnumerator DisableColliderCoroutine()
    {
        _collider.enabled = false;
        yield return new WaitForSeconds(2f);
        _collider.enabled = true;
    }
}

核心逻辑:

  • 提前缓存Collider组件,避免重复调用GetComponent
  • 触发碰撞后立即禁用碰撞器,阻止后续碰撞检测
  • 协程等待2秒后重新启用碰撞器,恢复越界检测功能

内容的提问来源于stack exchange,提问作者anderlaini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:11:26