Unity5 官方教程笔记(2D Rogue Like)05 —— Player

在笔者的一番观察之后,发现Enemy和Player间的主要区别还是体现在了脚本上,其余的部分的创建步骤基本是一致的,所以在这里就以脚本为主。

惯例,代码的主要结构:

可以看到这里除了MovingObject里提供的部分功能之外,还额外的处理了一些事情。我们还是按顺序的解释一下。

在Start()方法中:

我们除了获取了Player自己的动画器以外,同时还对UI中的文字进行了控制。

OnDisable()和OnTriggerEnter2D()都是MonoBehaviour提供的事件,

当我们在游戏关卡切换的时候,我们会将Player给Disable掉,这个时候就会触发OnDisable事件,在这里我们就是把最后的hp传递给GameManager,然后当下一关的Player创建的时候,便会从GameManager中获取上一关之后的hp继续游戏。

当Player在移动过程中,碰到了其它的碰撞体之后,便会根据这个碰撞体的tag来进行不同的处理(tag可以在unity的Inspector视图里面进行设置)。

对于Player的移动行为,我们是在Update()里面对用户的输入进行判断:

可以看到在这里,我们为了不让玩家能够斜着移动(因为这样和游戏的设计初衷就不一样了),所以当我们检测到有水平移动时,就会把垂直方向的移动归零。

Input.GetAxisRaw()是Unity提供的方法,用来获取轴向的输入,这样不管是键盘的方向键还是手机的加速器都可以作为一种输入方式被检测到。Input类里面还集成了很多其它的方法,用于获取各种输入的信息,详情请查询官方的文档。

在覆写的AttemptMove方法中:

我们每尝试移动一次都会消耗一点体力(hp、食物),同时修改了UI并且随机播放一种移动的声音。在移动结束之后会检查是否已经符合了结束游戏的条件(体力变成0),最后标记玩家回合结束、让电脑去控制敌方回合。

在OnCantMove中,我们将只处理和场地内墙的碰撞:

处理的方式就是让玩家做出挖掘的动作,一定次数的挖掘将使得场地内墙被摧毁。

Restart()方法中:

通过让引擎重新加载游戏场景的方式,重置游戏数据(不过笔者在这里没有调用过这个方法,主要原因是懒了,其实可以在GameManager的Update()中检测某个键的输入,如果检测到了就直接调用这个方法即可)

最后在CheckIfGameOver中,我们当检测到食物总数小于零之后将执行一些处理标志着游戏的结束:

至此MovingObject以及Enemy和Player我们就都讲完了。可以看到由于我们规定了MovingObject这个基类,所以使得在制作后面两种单位的时候减少了很多需要重复做的工作。

最后把做好的Enemy和Player从hierarchy视图拖入project视图中,会自动创建出prefab,这样尤其对于敌方单位来说,将更加便于批量创建。

下一篇文章将会讲解一下声音管理器(SoundManager)

时间: 2024-10-12 11:41:24

Unity5 官方教程笔记(2D Rogue Like)05 —— Player的相关文章

Unity5 官方教程笔记(2D Rogue Like)01 —— BoardManager

作为一个Rogue Like游戏,随机生成地图的功能是必不可少的.在上一篇博文(Unity5 官方教程笔记(2D Rogue Like)01 —— Game Manager)中,我们知道了在此项目中,负责这项工作的类叫做“BoardManager”,而且同时它还要负责对地图的存储工作.下面笔者就来对这个类的功能进行介绍. 首先还是看一下代码的基本结构: 可以看到在这个类里面,我们: 规定了地图的尺寸 设定了墙壁(地图)单元和食物单元的生成数量(也就是在特定关卡中这些单元的数量范围) 保存了各类单

Unity5 官方教程笔记(2D Rogue Like)01 —— Game Manager

笔者作为一个unity新手,很希望能尽快用unity做出自己的游戏.为了督促自己抓紧学习,同时也可以熟悉unity使用过程中的一些技巧,并发现.探讨一些问题,便决定通过撰写博客来达到以上目的,所以就将有以下这个系列的几篇博文. 以笔者目前掌握的技能来看,制作2d游戏是一个比较合适的选择,于是便选择了官方教程中的2d rogue like作为自己用来学习的项目.如果各位看官在阅读途中发现了什么问题,还希望及时指出. 附上教程地址:http://unity3d.com/cn/learn/tutori

Unity5 官方教程笔记(2D Rogue Like)06 —— SoundManager和Loader

作为辅助单位,SoundManager和Loader在游戏中也起到了很重要的作用.由于这两样东西本身比较简单,因此在这一篇文章中将一起讲解. 先说SoundManager: SoundManager和GameManager一样,在同一时间只需要一个,因此也要设定为单例模式.因此在Awake方法中和GameManager基本一样. 可以注意到,在Unity中,想要播放声音并不完全是简单的选定一个声音片段之后再播放就可以了,而是要把一段声音绑定到一个“AudioSource”上. AudioSour

C#程序员整理的Unity 3D笔记(二十):2D Toolkit之官方教程《Whack a Mole》

在上篇博客中,简单整理了一下Unity Native 2D功能:<C#程序员整理的Unity 3D笔记(十九):Unity 3D的Native 2D>. 本文开始学习2D商用比较广泛的2D Toolkit插件. 2D Toolkit插件在2D中的地位,犹如UI中NGUI对Unity GUI一样:虽然官方原生的2D还不错,但这是最近1年新版本才有的功能,2年前Unity 2D的王道还是得用插件的,故<2D Toolkit>就成了目前商业不错的选择. 在上周刚开始看的时候,就给自己提了

阮一峰:jQuery官方基础教程笔记

jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他库容易学会,但是要全面掌握,却不轻松.因为它涉及到网页开发的方方面面,提供的各种方法和内部变化有上千种之多.初学者常常感到,入门很方便

《Java: The Complete Reference》《Java 8 编程参考官方教程(第9版)》读书笔记

春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统,这么简单易懂.不得不佩服Herbert Schildt的编程功底,需要提到的是Herbert Schildt写了很多Java和C.C++的书,他是C.C++.Java和C#编程语言的权威,是ANSI/ISO组织C语言标准化委员会的委员. Herbert Schildt最新的基本Java著作其实都差不多,在内

jQuery官方基础教程笔记(转载)

本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他

[游戏开发-学习笔记]菜鸟慢慢飞(三)-官方教程学习小心得

自己的事情自己做 举例:官方教程<Tanks tutorial>中,小坦克:移动,移动的声音,射击,生命值的管理,等Component都挂载在GameObject坦克自己的身上.炮弹,则管理自己的爆炸等. 好处不少: ~开发维护的时候更加方便 ~符合"面对对象"的思想 一个脚本做一件事情 举例:官方教程<Tanks tutorial>中,小坦克:c#脚本分为三个,移动,生命管理,射击. 好处很多: ~在炮弹的爆炸脚本可以单独调用生命管理去更改生命值. ~代码更加

如何在Eclipse正确安装配置PyDev插件的官方教程,以及error 问题的解决方法:

官方教程; 1 1 This manual assumes that you have already have Python and/or Jython and/or IronPython installed in your machine, as well as Eclipse. Manual topics: Installing from update site and zips uninstalling Configuring the interpreter specify the py