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

Unity中玩家碰撞金币后金币不消失的问题排查

Unity玩家触碰金币无反应的排查方案

刚接触编程踩这些坑很正常,咱们从几个核心点排查:

1. 碰撞组件配置是核心前提

Unity的2D碰撞触发需要满足硬性条件:

  • 玩家对象必须同时拥有 Rigidbody2D 和 Collider2D(比如BoxCollider2D/CircleCollider2D),且Rigidbody2D的Body Type要设为Dynamic(选Kinematic会导致碰撞检测失效)
  • 金币对象必须有 Collider2D,且不能勾选Is Trigger(你代码里用的是OnCollisionEnter2D,这个函数仅响应非Trigger类型的碰撞;如果勾了Is Trigger,要换成OnTriggerEnter2D)

2. 标签检查别忽略大小写

确认金币的标签确实是gold:Unity标签区分大小写,别写成Gold或GOLD。去金币的Inspector面板里看标签下拉框,确保选的是你创建的gold标签,不是手动输入时打错字。

3. 更适合收集物的代码逻辑调整(可选)

如果金币只是用来收集,不需要和玩家产生物理碰撞(比如被顶飞),用Trigger机制更合适:

  • 给金币的Collider2D勾选Is Trigger
  • 把代码里的碰撞检测函数替换成OnTriggerEnter2D,代码如下:
void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.tag == "gold")
    {
        other.gameObject.SetActive(false);
    }
}

4. 最后确认代码挂载

检查你的Player脚本是不是确实挂在了玩家对象上,别不小心挂到其他无关物体上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:15:41