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

Unity开发:如何阻止玩家重复按E键与宝箱交互刷分?

解决方案

核心思路是给宝箱加一个已领取标记,避免重复触发积分奖励,同时保留宝箱对象:

  1. 在脚本里新增布尔变量,标记宝箱是否已被领取:
private bool isLooted = false; // 默认未领取
  1. 修改OnTriggerStay2D方法,加入标记判断,同时修正语法错误、优化按键触发逻辑(Input.GetKeyDown仅在按键按下第一帧触发,避免按住E持续触发):
private void OnTriggerStay2D(Collider2D collision)
{
    // 仅在玩家触发、未领取过、E键按下瞬间执行
    if(collision.gameObject.CompareTag("Player") && Input.GetKeyDown(KeyCode.E) && !isLooted)
    {
        anim.SetBool("opening", true);
        coins += 1;
        coinsText.text = "Coins: " + coins;
        
        Coin.SetActive(true);
        Destroy(textBox, .2f);
        getCoin = true;
        
        // 标记为已领取,阻止重复获取
        isLooted = true;
    }
}
  1. 若后续需要重置宝箱可领取状态(比如关卡刷新),只需将isLooted设回false即可,无需销毁或禁用宝箱对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:07:05