
本书面向希望创建游戏但没有开发经验的所有人。 Unity支持多种编程语言。 在本书中,我们将使用C#。 在开始创建游戏之前,您需要了解游戏设计的基础知识以及Unity游戏引擎本身,因此在本书的第一部分中,我们将研究这些问题。 在第二部分和第三部分中,我们将分别考虑创建二维和三维游戏的过程,在第四部分中,我们将讨论Unity的其他功能,这些知识对您很有用。
6.实施带有陷阱和目标的游戏
简单陷阱该游戏的大部分内容是处理各种物体的碰触-陷阱,宝藏,出口点等。 考虑到确定何时触摸特定对象的重要性,我们将创建一个通用脚本,当任何带有“ Player”标签的对象触摸它们时,该脚本就会生成一个Unity事件。 然后,将针对不同的对象对事件进行不同的配置:陷阱将通知游戏管理器侏儒已受到伤害,宝藏将报告侏儒已拾起宝藏,退出点是侏儒已到达出口。
现在,在名为SignalOnTouch.cs的文件中创建一个新的C#脚本,并向其中添加以下代码:
using UnityEngine.Events; // UnityEvent, "Player" // . [RequireComponent (typeof(Collider2D))] public class SignalOnTouch : MonoBehaviour { // UnityEvent . // . public UnityEvent onTouch; // true, AudioSource. public bool playAudioOnTouch = true; // , // SendSignal. void OnTriggerEnter2D(Collider2D collider) { SendSignal (collider.gameObject); } // , // SendSignal. void OnCollisionEnter2D(Collision2D collision) { SendSignal (collision.gameObject); } // "Player" // UnityEvent, . void SendSignal(GameObject objectThatHit) { // "Player"? if (objectThatHit.CompareTag("Player")) { // , if (playAudioOnTouch) { var audio = GetComponent<AudioSource>(); // // , // if (audio && audio.gameObject.activeInHierarchy) audio.Play(); } // onTouch.Invoke(); } } }
SignalOnTouch类的基础是SendSignal方法,该方法由OnCollisionEnter2D和OnTriggerEnter2D方法调用。 当对象接触碰撞器或对象属于触发器的范围时,Unity引擎将调用最后两个方法。 SendSignal方法检查对象的标签,如果它存储字符串“ Player”,则生成Unity事件。
现在您有了SignalOnTouch类,您可以添加第一个陷阱。
1.导入对象的精灵。 将Sprites / Objects文件夹的内容导入到项目中。
2.添加棕色的尖刺。 找到SpikesBrown精灵并将其拖到场景中。
3.设置带有尖峰的物体。 将PolygonCollider2D和SignalOnTouch组件添加到尖峰对象。
向SignalOnTouch事件添加新功能。 将游戏管理器拖到对象字段中,然后选择GameManager.TrapTouched函数,如图所示。 6.1。
4.将尖刺对象转换为模板。 将SpikesBrown对象从“层次结构”面板拖到“级别”文件夹。 结果,将创建一个模板,您可以使用该模板创建该对象的多个副本。
5.测试。 启动游戏。 使gnome达到峰值。 这个侏儒必须跌倒并重新出现!
宝藏和退出
成功添加杀死侏儒的陷阱后,该增加赢得游戏的机会了。 为此,添加两个新元素:宝藏和出口点。
宝藏是位于井底的精灵,可检测到侏儒的触摸并向游戏管理器发送信号。 发生这种情况时,游戏管理员告诉gnome,他抓住了宝藏,然后,将带有gnome空手的图像的精灵替换为带有握有宝物的手图像的精灵。
出口点是位于井顶部的另一个子画面。 就像宝藏一样,它可以检测到侏儒的触碰,并通知游戏管理员。 如果此时侏儒拥有宝藏,则将玩家授予游戏胜利。
这两个对象的主要工作由SignalOnTouch组件执行-当侏儒到达出口点时,应调用游戏管理员的ExitReached方法,当侏儒接触宝藏时,应调用TreasureCollected方法。
首先创建一个出口,然后添加一个宝藏。
创建出口点
首先,我们导入精灵。
1.导入关卡背景精灵。 将带有资源的已下载包中的Sprites / Background文件夹复制到项目的Sprites文件夹中。
2.添加一个精灵顶部。 将其放置在“绳索”对象的正下方。 此精灵将用作出口点。
3.设置精灵。 将Box Collider 2D组件添加到精灵中,然后选中Is Trigger框。 单击“ Edit Collider”按钮并调整对撞机的大小,使其短而宽,如图2所示。 6.2。
4.配置在触摸精灵时将信号发送到游戏管理器。 将SignalOnTouch组件添加到Sprite。 将一个项目添加到组件的事件列表中,然后将其连接到游戏管理器。 选择GameManager.ExitReached函数。 现在触摸退出侏儒将调用游戏管理器的ExitReached方法。
现在添加宝藏。
宝藏的工作方式如下:默认情况下,“宝藏”对象显示带有宝藏图像的精灵。 当侏儒碰到它时,将调用Game Manager的TreasureCollected方法,并显示另一个精灵代替宝藏,表明宝藏已被拾取。 当侏儒死亡时,宝物会返回其原始状态,并再次显示带有宝物图像的精灵。
由于游戏中精灵的更改会经常执行-我们将在改进图形时看到这一点-因此创建一个通用类来更改精灵并将其用于宝物是有意义的。
创建一个名为SpriteSwapper.cs的新C#脚本。 向其添加以下代码:
// . , // ' ' ' '. public class SpriteSwapper : MonoBehaviour { // , . public Sprite spriteToUse; // , // . public SpriteRenderer spriteRenderer; // . ResetSprite. private Sprite originalSprite; // . public void SwapSprite() { // ... if (spriteToUse != spriteRenderer.sprite) { // originalSprite originalSprite = spriteRenderer.sprite; // . spriteRenderer.sprite = spriteToUse; } } // . public void ResetSprite() { // ... if (originalSprite != null) { // ... . spriteRenderer.sprite = originalSprite; } } }
SpriteSwapper类设计用于两种操作:调用SwapSprite方法时,会将另一个Sprite传递给连接到游戏对象的SpriteRenderer可视化器以进行显示。 在这种情况下,原始子画面存储在变量中。 调用ResetSprite方法时,会向可视化工具发送原始的精灵以进行显示。
现在,您可以创建和自定义Treasure对象。
1.添加带有宝藏图像的精灵。 找到TreasurePresent精灵并将其添加到场景中。 将其放置在靠近底部的位置,但是要使gnome能够将其放置。
2.添加一个宝藏对撞机。 选择带有宝物图像的精灵,然后向其中添加Box Collider 2D组件。 选中是触发器。
3.添加并配置用于更改精灵的脚本。 添加SpriteSwapper组件。 将带有宝藏图像的精灵拖动到该组件的“精灵渲染器”字段中。 然后找到TreasureAbsent精灵,并将其拖到精灵更改器的“要使用的精灵”字段中。
4.响应于分接头,添加并配置信号发送组件。 添加SignalOnTouch组件。 将两个项目添加到“触摸时”列表中:
- 首先链接到游戏管理器对象,然后选择GameManager.TreasureCollected方法;
- 将第二个与宝藏精灵(即与您当前正在设置的对象)关联,然后选择SpriteSwapper.SwapSprite方法。
5.添加并配置“可重置”组件。 将一个Resettable组件添加到该对象。 将一个项目添加到“触摸时”列表中,选择SpriteSwapper.ResetSprite方法,然后将其与Treasure对象关联。
结果,检查器面板中的设置应如图所示。 6.3。
6.测试游戏。 启动游戏并触摸宝藏。 那一刻,宝藏将消失。 如果该侏儒死了,那么在创建新的侏儒之后,宝藏将重新出现在其位置上。
添加背景
当前,游戏在默认情况下在Unity中设置的暗蓝色背景下进行。 在本部分中,我们将添加一个临时背景,当我们开始改进游戏的图形设计时,将使用背景精灵替换它。
1.添加背景矩形。 打开GameObject菜单,然后选择3D ObjectDQuad(3DObjectRectangle)。 将新对象命名为Background。
2.将背景移到背景。 为了避免在游戏精灵上方绘制矩形背景的情况,请将其移至背景,远离相机。 为此,将矩形的Z坐标设置为10。
3.设置背景矩形的宽度和高度。 按下T键打开Rect工具,然后使用手柄设置矩形的尺寸。 背景的上边界应该与精灵在同一平面上,并且在场景的顶部,而在底部与宝藏相同(图6.4)。
4.测试游戏。 开始后,运动场的背景应变为深灰色。
»这本书的更多信息可以
在出版商的网站上找到»
目录»
摘录小贩优惠券20%
-Unity