从零开始入门创作游戏——对象交互与UI展示

news/2024/10/22 17:38:36/

做教程远比自己开发游戏要花时间...继续写小恐龙的游戏教程

环境搭建在这里

从零开始入门创作游戏——Unity3d的环境搭建_默哀d的博客-CSDN博客

素材导入和基本页面介绍在这里

从零开始入门创作游戏——Unity编辑器的使用_默哀d的博客-CSDN博客

游戏对象的运动和交互逻辑脚本在这里

从零开始入门创作游戏——游戏对象的脚本编辑_默哀d的博客-CSDN博客


  • 对象交互

上次在修改恐龙能无限跳的bug时就算是一种交互了,接下来是障碍物与恐龙交互的代码

需求:

1、仙人掌和之前的场景一样向左移动

2、恐龙碰到仙人掌就游戏结束

首先需求1很简单,将上次的物体移动脚本添加上去就可以了

然后添加碰撞体积,跟上次创建恐龙和地板的一样,那么测试游戏的时候就会出现仙人掌把小恐龙冲走的

 那么接下来触发结束游戏的互动的话,就需要添加标签,将地板的碰撞和仙人掌的碰撞分开

选择一个游戏对象,然后在右边的【标签】——【添加标签】

 点击这里的加号添加标签

 添加【Cactus】标签再保存

 然后重新选择仙人掌的游戏对象,将标签改成【Cactus】,这样就能根据tag来判断触发判断的对象是哪个了

然后在恐龙的脚本中增加一个判断,如果触碰到标签为【Cactus】时,就游戏终止

public class DinosaurScript : MonoBehaviour
{Rigidbody2D rb;//控制物体下落的组件public float jumpHeight;//跳的高度bool isJumping;//判断是否正在跳// Start is called before the first frame updatevoid Start(){rb = GetComponent<Rigidbody2D>();isJumping = false;}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)&& isJumping == false)//只有满足按下空格同时能跳时才能跳起{rb.velocity = new Vector2(0, jumpHeight);isJumping = true;//一旦跳起了就变成不能跳了}}private void OnCollisionEnter2D(Collision2D collision){isJumping = false;if (collision.gameObject.tag == "Cactus")//如果接触的对象标签为Cactus时{Time.timeScale = 0;//这是unity的自带时间函数,等于0时游戏停止}}
}

然后进行测试游戏时,能控制小恐龙跳,直到恐龙碰到仙人掌就会停止动画


  • 游戏UI的展示

当游戏结束的时候,需要出现提示和可以有一个可以重新开始的按钮

首先是创建Game Over 的text文件,Unity 中有2中Text格式,

一种是 右键——UI——文本 TextMeshPro

这种文本生成时会出现以下窗口,点击 Import TMP Essentials后会在资产根目录中增加这个文本的各种资产。但是这个格式的text不支持本次游戏的tff格式字体文件,所以使用另一种text

一种是 右键——UI——旧版——文本

选中这个text对象后,将字体文件拖动到右侧字体的位置

调整字体大小和文本框大小,如果字号过大而文本框过小,那么文本内容就可能不会展示出来 

这里有个奇怪的地方,文本是 Canvas 的子对象(红色框),而Canvas 这个对象的范围是随着游戏屏幕大小变化的,文本就展示在这个范围内。但是其他的游戏对象(恐龙和背景对象)实际上是在非常小的范围内(黄色框)。

 

接下来再添加上游戏重试的按钮,游戏对象处右键——UI——旧版——按钮

就会生成个按钮对象和自对象按钮上的文本和EventSystem这个对象

我们不需要文本就先把文本子对象给删了,同时将按钮图案进行修改

将重开按钮的资产拖动到image的源图案中即可,然后和文本一样进行调整位置和大小(绿色框) 

 如果通过先创建图像对象,再在右侧创建button组件的话,是无法触发的,我也不知道为啥,还在研究中。而且如果是先创建图像对象,那么图像的大小就不再canvas坐标系中,而是默认图层的坐标系里。

需要注意一点,重试按钮和文本要放在同一个父对象中(左侧红框),这样才能对这个父对象进行操作时,按钮和文本就会同时出现和消失(右侧红框)

由于是结束的时候才会展示的,现在先将这个父对象进行隐藏。即去掉右边的√

 接下来就要编写游戏结束的UI展示时机和重试按钮的重开游戏脚本


  • Gamemanager的脚本

传说每个游戏都会有Gamemanager这个脚本,里面记载了这款游戏中的所有游戏属性和游戏机制

我们在资产中创建一个叫Gamemanager的脚本,脚本图标就会自动变成齿轮

 打开脚本后,添加游戏结束时游戏终止和UI展示的脚本

public class GameManager : MonoBehaviour
{public GameObject GameOverScene;//创建名为GameOverScene的游戏对象// 游戏结束时游戏终止和UI展示public void GameOver(){Time.timeScale = 0;GameOverScene.SetActive(true);//将GameOverScene这个游戏对象显示}// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}}

同时,将恐龙的脚本进行修改,将原本判断游戏终止的脚本替换成使用Gamemanager的脚本中的gameover函数

public class DinosaurScript : MonoBehaviour
{Rigidbody2D rb;//控制物体下落的组件public float jumpHeight;//跳的高度bool isJumping;//判断是否正在跳public GameManager gm;//gamemanager组件// Start is called before the first frame updatevoid Start(){rb = GetComponent<Rigidbody2D>();isJumping = false;}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)&& isJumping == false){rb.velocity = new Vector2(0, jumpHeight);isJumping = true;}}private void OnCollisionEnter2D(Collision2D collision){isJumping = false;if (collision.gameObject.tag == "Cactus"){//Time.timeScale = 0;//改成使用gm的函数进行游戏终止的操作gm.GameOver();}}
}

但是要引用GM这个函数,需要在游戏对象中先创建GM这个空对象,再将GM脚本拖动到GM对象中(红色箭头)

同时,将游戏结束的UI父对象拖到GameOverScene这个地方(绿色箭头)

 然后,将GM对象拖动到恐龙对象中

这样测试游戏时,当恐龙触碰到仙人掌时,就会游戏停止同时结束UI展示出来


  • 重开按钮的设置

接下来是编写重开按钮的脚本, 但是首先需要先重命名场景名字。首先点击场景,然后右键【打开场景资产】(左上框),然后在资产窗口中修改这个场景文件的名字(下面资产框),修改完后需要重新加载这个文件才行(中间确认窗口)

然后编写脚本,和GameOver方法一样,写在GM脚本中编写Restart方法,注意一下start函数中增加了一个参数,用于重置游戏运行速度为正常速度。

using UnityEngine.SceneManagement; //需要加上这个类public class GameManager : MonoBehaviour
{public GameObject GameOverScene;// Start is called before the first frame updatevoid Start(){/*注意这里加了一个参数,游戏开始先重置游戏速度为1,不然游戏重新载入时会是静止的*/Time.timeScale = 1;}// Update is called once per framevoid Update(){}// 游戏结束时游戏终止和UI展示public void GameOver(){Time.timeScale = 0;GameOverScene.SetActive(true);}public void Restart(){SceneManager.LoadScene("lv1"); //unity自带的场景展示函数,读取指定场景名的场景}}

而重开图标,需要在button组件的【鼠标单机】中点击【+】号

 

再将GM对象拖动到这个组件中(红色箭头),然后在下拉框中选择GM脚本中的restart函数,这样这个Button在游戏运行时展示出来后,点击就会重新载入指定的场景

这样,游戏就算完成了!

以上为从油土鳖15分钟游戏教程视频中学到的大部分东西,接下来我自己研究一下怎么进一步改进游戏内容,例如增加生命值,仙人掌随机刷新,鸟随机飞等功能。


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

相关文章

c语言 simon 游戏,汉语课堂教学游戏推荐(上)

原标题&#xff1a;汉语课堂教学游戏推荐(上) 一、 BINGO 游戏 先让学生在本子上画九个格&#xff0c;每个格内填写一个听到的汉字&#xff0c;最后当老师念完后&#xff0c;老师选3个汉字念出来&#xff0c;只要学生把这 3个汉字填写在一条线上&#xff0c;便可获胜 &#xff…

【第98期】游戏策划:给@我有一个本子的应聘攻略

我是酱油&#xff0c;这是第98期文章 昨夜10点多&#xff0c;后台收到网友我有一个本子的留言&#xff1a; 前辈你好&#xff0c;究极恳请您给我一些建议&#xff0c;我先介绍一下自己的情况&#xff0c;我想做一名游戏策划&#xff0c;普通本科&#xff0c;专业动物科学&…

游戏人生

*、人生如戏&#xff0c;戏如人生&#xff0c;不管什么东东&#xff0c;只有合理&#xff0c;适度才能不被其蛊惑&#xff0c;保持积极正能量~ *、骚年&#xff0c;想想到底为了什么&#xff0c;再打开这个吧~

超过3万Mac已感染 “银麻雀”病毒 最新m1芯片也中招

mac电脑用户请注意&#xff0c;目前有一款名为“银麻雀”‘Silver Sparrow’ 的病毒在传播&#xff0c;已造成超过3万mac电脑的感染&#xff0c;此病毒居然开发适配了m1芯片版本&#xff0c;意味着m1芯片的电脑也会中招。 经研究&#xff0c;目前这个病毒不会有负面效果&#…

Mac技巧之用终端命令行查看苹果电脑显示器液晶面板型号的方法

http://www.mac52ipod.cn/post/check-mac-lcd-by-terminal-command.php 以前写过测试苹果电脑液晶屏幕坏点、亮点的软件&#xff1a;PiXel Check&#xff0c;今天再进一步&#xff0c;介绍用终端命令行查看苹果电脑显示器液晶面板型号的方法。打开苹果电脑 Mac OS X 系统自带的…

一汽大众推出儿童安全座椅上市

l一汽-大众原装附件G1儿童安全座椅正式上市&#xff0c;面向所有消费者进行销售&#xff1b; lG1组儿童安全座椅获得欧洲ECE安全认可&#xff0c;符合国家标准&#xff0c;能为儿童提供全面的安全保护&#xff1b; l作为汽车行业的领导者企业&#xff0c;一汽-大众将持续开展“…

搭载 Apple T2 安全芯片的 Mac 电脑详细的U盘装系统图文教程

Apple T2 安全芯片是 Apple 为 Mac 定制的第二代硅芯片。T2 芯片为 Mac 带来了多项新功能。那么怎么给搭载 Apple T2 安全芯片的 Mac 电脑重装系统呢&#xff1f;今天小编为大家带来apple t2芯片电脑用U盘重装系统的详细图文教程。 配备 Apple T2 安全芯片的电脑 下列 Mac 配备…

三星530换固态硬盘_2015款21.5寸苹果I MAC换SSD固态硬盘过程分享

苹果电脑一直称之为最有生产力的电脑&#xff0c;我作为影视编辑工作&#xff0c;时间精力是十分宝贵&#xff0c;而苹果电脑是我的首选之一&#xff0c;但随着时代变化电脑的速度与效率一直近年来一直在攀升&#xff0c;而提升速度效率&#xff0c;这与硬件、软件优化之间离不…