【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第五篇:游戏结束与重新开始

news/2024/12/23 21:33:05/

文章目录

      • 一、前言
      • 二、制作边界碰撞体
      • 三、制作游戏结束界面
      • 四、游戏结束界面脚本
      • 五、游戏管理器
      • 六、碰撞检测逻辑
      • 七、运行测试

一、前言

嗨,大家好,我是新发。
我打算写一篇使用Unity制作像天天酷跑一样的游戏的教程,会按功能点分成多篇文章来讲,希望可以帮助一些想学Unity的同学。
注:我使用的Unity版本是2020.1.14f1c1。

文章目录:
第一篇:人物动画序列帧
第二篇:使用Animator控制跑酷角色的动画状态切换
第三篇:跑酷地面制作
第四篇:使用脚本控制跑酷角色
第五篇:游戏结束与重新开始
第六篇:金币创建与吃金币
第七篇:游戏界面的基础UI

本工程的Demo工程,我已上传到GitHub,感兴趣的同学可以自己下载下来学习。
https://github.com/linxinfa/UnityParkourGameDemo
在这里插入图片描述

本节我将讲下游戏结束与重新开始的实现,本节的效果:在这里插入图片描述

二、制作边界碰撞体

创建两个空物体:BottomBorderLeftBorder,添加BoxCollider2D组件,调整大小和位置,作为边界碰撞体,如下:
在这里插入图片描述
添加一个BorderTag
在这里插入图片描述
两个边界碰撞器的Tag设置为Border
在这里插入图片描述

三、制作游戏结束界面

导入UI素材,
请添加图片描述

请添加图片描述请添加图片描述请添加图片描述
请添加图片描述请添加图片描述请添加图片描述
制作成游戏结束界面预设:GameOverPanel
在这里插入图片描述
预设保存在Resources文件夹中。
在这里插入图片描述
这样,主角碰撞到边界碰撞体的时候,我们就可以实例化这个界面出来了。

var canvas = GameObject.Find("Canvas");
var prefab = Resources.Load("GameOverPanel");
var panel = GameObject.Instantiate(prefab) as GameObject;
panel.transform.SetParent(canvas.transform, false);

四、游戏结束界面脚本

创建一个GameOverPanel.cs脚本,挂到GameOverPanel预设上,
在这里插入图片描述
代码如下:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;public class GameOverPanel : MonoBehaviour
{public Button restartBtn;void Start(){restartBtn.onClick.AddListener(() => {GameMgr.instance.state = GameState.Playing;SceneManager.LoadScene(0);});}
}

五、游戏管理器

游戏有准备、进行中、结束三个状态,为了方便管理,我们做一个游戏管理器。
创建一个空物体,命名为GameMgr
在这里插入图片描述
创建GameMgr.cs脚本,挂到这个物体上,代码如下:

using UnityEngine;public class GameMgr : MonoBehaviour
{private void Awake(){s_instance = this;m_state = GameState.Playing;}public GameState state{get { return m_state; }set{m_state = value;if(GameState.End == value){// 游戏结束var canvas = GameObject.Find("Canvas");var prefab = Resources.Load("GameOverPanel");var panel = GameObject.Instantiate(prefab) as GameObject;panel.transform.SetParent(canvas.transform, false);}}}private GameState m_state = GameState.Ready;private static GameMgr s_instance;public static GameMgr instance { get { return s_instance; } }
}public enum GameState
{Ready,Playing,End,
}

六、碰撞检测逻辑

Player.cs添加边界碰撞检测逻辑。

/// <summary>
/// 碰撞事件方法
/// </summary>
/// <param name="other"></param>
void OnCollisionEnter2D(Collision2D other)
{switch (other.gameObject.tag){case "Ground":{// 碰撞到地面m_ani.SetBool("IsJumping1", false);m_ani.SetBool("IsJumping2", false);m_jumpCount = 0;}break;case "Border":{// 游戏结束GameMgr.instance.state = GameState.End;}break;}
}

七、运行测试

运行Unity,效果如下:
在这里插入图片描述
下一节讲金币创建与吃金币的实现。
[点击进入下一节]


http://www.ppmy.cn/news/170272.html

相关文章

简单的跑酷游戏

策划部分&#xff1a; 关于游戏背景&#xff0c;我把主角设置成了《爱宠大机密》中的兔子小白&#xff08;雪球&#xff09;&#xff0c;相信大家对与这只兔子相关的表情包不会陌生。       以此为背景&#xff0c;我打算设置一个在人类的追逐下&#xff0c;兔子尽力逃…

Java项目实战之天天酷跑

来源&#xff1a;blog.csdn.net/qq_45909299 首先&#xff0c;写一个需求文档&#xff1a; 一、项目名称&#xff1a;《天天酷跑》&#xff08;RunDay&#xff09; 二、功能介绍&#xff1a;闯关类游戏&#xff0c;玩家登录后&#xff0c;选择进入游戏&#xff0c;通过键盘控制…

【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第六篇:金币创建与吃金币

文章目录 一、前言二、导入金币图片素材三、制作金币预设四、制作多个形状的金币阵列五、金币创建器六、运行测试 一、前言 嗨&#xff0c;大家好&#xff0c;我是新发。 我打算写一篇使用Unity制作像天天酷跑一样的游戏的教程&#xff0c;会按功能点分成多篇文章来讲&#xf…

【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第三篇:跑酷地面制作

文章目录 一、前言二、导入地面素材三、制作地面预设四、使用脚本控制地面移动五、起始和结束位置六、复制多个地面预设七、运行效果 一、前言 嗨&#xff0c;大家好&#xff0c;我是新发&#xff0c;今天是大年初三&#xff0c;大家牛年快乐&#xff0c;牛气冲天。 我打算写一…

【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第四篇:使用脚本控制跑酷角色

文章目录 一、前言二、给角色添加碰撞器三、给地面设置Tag四、创建Player脚本五、运行测试 一、前言 嗨&#xff0c;大家好&#xff0c;我是新发&#xff0c;今天是大年初五&#xff0c;大家牛年快乐&#xff0c;牛气冲天。 我打算写一篇使用Unity制作像天天酷跑一样的游戏的教…

安卓天天酷跑脚本刷高分图文教程

http://news.gamedog.cn/a/20130923/241742.html

安卓android仿天天酷跑游戏(一)

玩过酷跑的人都知道游戏中有个小人&#xff0c;之后他女朋友被坏人抓走了&#xff0c;然后这个小孩就往前使劲跑&#xff0c;使劲跑... 我们看似人物在往前走&#xff0c;其实际是背景和陆地再往后退 比如当我们刚上火车后&#xff0c;火车还未开动&#xff0c;但是我们看到窗…

模型评估指标(一)Top-5和Top-1准确率

文章目录 一、前言二、什么是Top-5和Top-1准确率与错误率参考博客 一、前言 在看论文里面提到Top-5和top-1错误率&#xff0c;看了有点懵&#xff0c;所以去了解了一下 二、什么是Top-5和Top-1准确率与错误率 举个例子&#xff1a; 我们在训练完某个分类网络后&#xff0c…