700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【游戏开发实战】使用Unity制作像天天酷跑一样的跑酷游戏——第五篇:游戏结束与重新

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

时间:2024-01-03 17:28:27

相关推荐

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

文章目录

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

一、前言

嗨,大家好,我是新发。

我打算写一篇使用Unity制作像天天酷跑一样的游戏的教程,会按功能点分成多篇文章来讲,希望可以帮助一些想学Unity的同学。

注:我使用的Unity版本是.1.14f1c1。

文章目录:

第一篇:人物动画序列帧

第二篇:使用Animator控制跑酷角色的动画状态切换

第三篇:跑酷地面制作

第四篇:使用脚本控制跑酷角色

第五篇:游戏结束与重新开始

第六篇:金币创建与吃金币

第七篇:游戏界面的基础UI

本工程的Demo工程,我已上传到GitHub,感兴趣的同学可以自己下载下来学习。

/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,效果如下:

下一节讲金币创建与吃金币的实现。

[点击进入下一节]

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。