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

Unity 2D横版跳跃游戏:实现敌人碰撞触发游戏结束场景

2D横版游戏敌人触发器碰撞问题解决指南

问题根源分析

  1. 回调函数命名错误
    你当前代码中的onTriggerEnter2d不符合Unity的回调函数规范——Unity的2D触发器回调必须是大写开头+正确大小写格式:OnTriggerEnter2D,小写开头的方法Unity不会自动调用。

  2. 碰撞体配置缺失或错误
    结合你提供的对象和配置截图,需确保以下配置全部满足:

    • 玩家、敌人对象都添加了Collider2D组件(如BoxCollider2D)
    • 其中至少一个对象的碰撞体勾选了Is Trigger(推荐给敌人的碰撞体勾选)
    • 玩家对象必须挂载Rigidbody2D组件(静态对象无法触发触发器,即使设为Kinematic也可)
    • 玩家与敌人的**Layer(层)**未在Physics2D设置中被设置为忽略碰撞

修正后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // 引入场景管理命名空间

public class EnemyTrigger : MonoBehaviour
{
    // 正确的2D触发器进入回调函数
    private void OnTriggerEnter2D(Collider2D collision)
    {
        // 通过Tag判断碰撞对象是否为玩家(需先给玩家设置Tag为Player)
        if (collision.CompareTag("Player"))
        {
            Debug.Log("玩家触碰敌人,触发游戏结束");
            // 替换为你的游戏结束场景名称
            SceneManager.LoadScene("GameOverScene");
        }
    }
}

必做配置步骤

  • 给玩家对象设置Tag为Player(在Inspector面板的Tag下拉菜单中选择或创建)
  • 确认敌人的Collider2D勾选了Is Trigger,若敌人有Rigidbody2D,根据移动需求设置为Static或Kinematic
  • 打开Edit > Project Settings > Physics2D,检查Layers碰撞矩阵,确保玩家与敌人所在层的碰撞规则为允许触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:02:43