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

Unity2D中如何让物体移出屏幕时触发游戏结束界面

解决Unity物体掉出屏幕触发游戏结束的方案

方法一:屏幕坐标检测(直接代码判断)

给带Rigidbody2D的物体挂载以下脚本,每帧检测物体是否超出屏幕可视范围,一旦超出就触发游戏结束逻辑:

using UnityEngine;

public class OutOfScreenCheck : MonoBehaviour
{
    private Camera mainCamera;

    void Start()
    {
        // 获取主相机
        mainCamera = Camera.main;
    }

    void Update()
    {
        // 将物体世界坐标转换为屏幕坐标(范围:左下角(0,0),右上角(Screen.width, Screen.height))
        Vector3 screenPos = mainCamera.WorldToScreenPoint(transform.position);

        // 判断是否超出屏幕边界(上下左右任意一边超出即触发)
        bool isOutOfScreen = screenPos.x < 0 || screenPos.x > Screen.width || 
                             screenPos.y < 0 || screenPos.y > Screen.height;

        if (isOutOfScreen)
        {
            // 调用你的游戏结束方法,比如切换到结束界面
            GameOver();
        }
    }

    void GameOver()
    {
        // 这里写游戏结束的逻辑,比如加载场景、显示UI等
        Debug.Log("游戏结束!");
        // 示例:SceneManager.LoadScene("GameOverScene"); 需要引入using UnityEngine.SceneManagement;
    }
}

注意事项

  • 2D游戏一般用正交相机,上面代码直接适用;如果是透视相机,需调整判断逻辑(比如基于物体与相机的距离)。
  • 可以调整判断阈值,比如screenPos.x < -50,避免物体边缘刚出屏幕就触发。

方法二:屏幕外触发器检测(可视化操作)

这种方法更直观,适合新手操作:

  1. 在场景中创建空物体,命名为ScreenBoundaryTrigger
  2. 给它添加BoxCollider2D组件,勾选Is Trigger
  3. 调整BoxCollider2D的大小,让它完全包围屏幕外的区域(比屏幕大一圈即可)
  4. 给触发器物体挂载以下脚本:
using UnityEngine;

public class BoundaryTrigger : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        // 检查触发的物体是否是目标对象(通过标签判断更准确)
        if (other.CompareTag("Player")) // 假设目标物体标签为Player
        {
            GameOver();
        }
    }

    void GameOver()
    {
        Debug.Log("游戏结束!");
        // 这里写游戏结束逻辑
    }
}

注意事项

  • 确保目标物体的Collider2D未勾选Is Trigger,且Rigidbody2D的Body Type不是Kinematic(否则触发器无法检测到)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:12