首页 > 解决方案 > 如何在 C# 中从碰撞中结束游戏

问题描述

这是我拥有的当前脚本。我有一个球是玩家,我想与标记为“pit”的游戏对象发生碰撞以结束游戏。当游戏结束时,我希望我的游戏在画布上弹出。当前脚本在玩家翻过坑时检测到命中,但是,目前,没有其他任何事情发生。我的玩家和pit都附有刚体和对撞机。我非常感谢任何有关如何让我的代码正常工作的帮助。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Trigger : MonoBehaviour
{
   public GameObject GameManager;

   private void OnTriggerEnter(Collider other)
   {
      Debug.Log("hit detected")

      if(other.gameObject.tag == "pit")
      {
          GameManager.GetComponent<Game_Manager>().EndGame();
      }
   }
}

我的 EndGame 代码在我的 GameManager 脚本中。这是该脚本中处理结束游戏的部分。

public void EndGame ()
{
    player.GetComponent<Rigidbody>().constraints =   RigidbodyConstraints.FreezePosition;
    hasGameStarted = true;
    inMenuUI.gameObject.SetActive(false);
    inGameUI.gameObject.SetActive(false);
    gameOverUI.gameObject.SetActive(true);
    
}

标签: c#unity3d

解决方案


如果我对您的问题的解释是正确的,那么您的脚本已经成功检测到玩家死亡。如果您想要屏幕上的游戏,您有几个选择:

您可以创建一个 UI 画布,上面有一个面板,它会遮盖整个屏幕并放置单词 Game Over。

或者,可能更好的选择是创建一个全新的 Unity 场景并在那里制作 Game Over 画布。当您想触发游戏结束屏幕时,您只需使用: Scene manager.LoadScene("Scene name");

您必须添加“使用 UnityEngine.SceneManagement;” 在脚本的顶部。另请注意,您必须将 Game Over 场景添加到游戏中的场景列表中。我相信这可以通过导航到文件>构建设置>场景,然后假设游戏结束场景打开,然后按添加打开场景来完成。


推荐阅读