c# - 如何在 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);
}
解决方案
如果我对您的问题的解释是正确的,那么您的脚本已经成功检测到玩家死亡。如果您想要屏幕上的游戏,您有几个选择:
您可以创建一个 UI 画布,上面有一个面板,它会遮盖整个屏幕并放置单词 Game Over。
或者,可能更好的选择是创建一个全新的 Unity 场景并在那里制作 Game Over 画布。当您想触发游戏结束屏幕时,您只需使用: Scene manager.LoadScene("Scene name");
您必须添加“使用 UnityEngine.SceneManagement;” 在脚本的顶部。另请注意,您必须将 Game Over 场景添加到游戏中的场景列表中。我相信这可以通过导航到文件>构建设置>场景,然后假设游戏结束场景打开,然后按添加打开场景来完成。
推荐阅读
- java - 将各种特定异常与一个通用的包罗万象的异常一起捕获是一种好习惯吗?
- swift - 如何在 Swift 中设置约束的优先级?
- docker - 来自 docker-on-windows 的 tar utime 不起作用
- angular - ngx-toastr ToastrService.show() 类型参数 Angular 2 +
- excel - 根据两个条件查找单元格范围
- java - AlarmManager 重置显示错误系统服务在 onCreate() 之前对活动不可用
- flask - 如何从蓝图模板中访问应用程序名称?
- sql - 带有数据透视和计数的 Sql 查询
- wordpress - 基于 Alexa Skill 的 WordPress 语音识别
- php - 如何在浏览器 url 中禁止直接访问网站目录,但在网站内部请求时允许?