如何从碰撞中结束C#游戏

如何从碰撞中结束C#游戏,c#,unity3d,C#,Unity3d,这是我目前的脚本。我有一个是玩家的球,我想和我标记为“坑”的游戏对象碰撞以结束游戏。当游戏结束时,我希望我的游戏在画布上弹出。当前脚本在玩家翻滚到坑上时检测到命中,但是,目前,没有其他情况发生。我的播放器和pit都有刚体和碰撞器。如果您能帮助我使代码正常工作,我将不胜感激 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Trigger : MonoBehavi

这是我目前的脚本。我有一个是玩家的球,我想和我标记为“坑”的游戏对象碰撞以结束游戏。当游戏结束时,我希望我的游戏在画布上弹出。当前脚本在玩家翻滚到坑上时检测到命中,但是,目前,没有其他情况发生。我的播放器和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();
      }
   }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类触发因素:单一行为
{
公共游戏对象游戏管理器;
专用空对撞机(对撞机其他)
{
Log(“检测到命中”)
如果(other.gameObject.tag==“pit”)
{
GameManager.GetComponent().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);
    
}
public-void-EndGame()
{
player.GetComponent().constraints=RigidbodyConstraints.FreezePosition;
hasGameStarted=true;
inMenuUI.gameObject.SetActive(false);
inGameUI.gameObject.SetActive(false);
gameOverUI.gameObject.SetActive(true);
}

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

您可以创建一个UI画布,画布上有一个面板,可以遮住整个屏幕,并覆盖文字游戏

或者,可能更好的选择是创建一个全新的Unity场景,并在画布上制作游戏。当您想在屏幕上触发游戏时,只需使用: 场景管理器。加载场景(“场景名称”)


您必须在脚本顶部添加“using UnityEngine.SceneManagement;”。还请注意,您必须将游戏添加到游戏中的场景列表中。我相信这可以通过导航到文件>构建设置>场景,然后按add open scenes(添加打开的场景)来实现,假设场景上的游戏是打开的。

如何设置您的玩家和“坑”刚体/碰撞器?欢迎使用StackOverflow!你能演示一下如何使用
游戏结束时的代码吗?你有没有检查过它是否有人打电话?通常使用
other.CompareTag(“pit”)
。。它通过在标签拼写错误/不存在的情况下引发异常来避免静默失败