本书“为开发人员提供统一性。 移动多平台游戏»

图片 本书面向希望创建游戏但没有开发经验的所有人。 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(3DObjectRectangle)。 将新对象命名为Background。

2.将背景移到背景。 为了避免在游戏精灵上方绘制矩形背景的情况,请将其移至背景,远离相机。 为此,将矩形的Z坐标设置为10。

图片

3.设置背景矩形的宽度和高度。 按下T键打开Rect工具,然后使用手柄设置矩形的尺寸。 背景的上边界应该与精灵在同一平面上,并且在场景的顶部,而在底部与宝藏相同(图6.4)。

图片

4.测试游戏。 开始后,运动场的背景应变为深灰色。

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

小贩优惠券20% -Unity

Source: https://habr.com/ru/post/zh-CN413531/


All Articles