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

Unity中如何检测克隆体碰撞?能否用标签与OnCollisionEnter实现?

克隆体碰撞检测与销毁实现方案

完全可以用标签+OnCollisionEnter()函数实现你要的功能,以下是具体操作步骤:

  • 给需要被销毁的目标物体设置专属标签
    选中目标物体,在Inspector面板的Tag下拉菜单中新建并设置标签(比如命名为"Destructible"),确保所有要被销毁的物体都用这个标签。

  • 给抛射物预制体添加碰撞检测脚本
    创建一个新的C#脚本(比如命名为ProjectileCollision),写入以下代码:

    using UnityEngine;
    
    public class ProjectileCollision : MonoBehaviour
    {
        void OnCollisionEnter(Collision collision)
        {
            // 检查碰撞对象是否是目标标签
            if (collision.gameObject.CompareTag("Destructible"))
            {
                // 销毁被碰撞的物体
                Destroy(collision.gameObject);
                // 销毁当前抛射物克隆体
                Destroy(gameObject);
            }
        }
    }
    

    把这个脚本挂载到你的Projectile预制体上即可。

  • 确保碰撞条件生效

    • 抛射物预制体必须带有Collider组件(比如Sphere Collider),不要勾选Is Trigger(OnCollisionEnter需要非触发器碰撞);
    • 抛射物和目标物体中至少有一个带有Rigidbody组件,且该Rigidbody不能勾选Is Kinematic,否则碰撞不会被检测到。
  • 可选优化:避免抛射物互相碰撞
    如果不想让克隆出来的抛射物之间互相碰撞,可以在Edit → Project Settings → Physics中打开Layer碰撞矩阵,给抛射物单独设置一个Layer,然后取消该Layer与自身的碰撞勾选。

你的现有发射代码不需要修改,只要完成上述设置,抛射物克隆体接触到目标物体时就会触发销毁逻辑。

内容的提问来源于stack exchange,提问作者R-ty_dragon1_YT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42