位置: 编程技术 - 正文

Unity3D游戏开发之塔防游戏项目讲解(下)(Unity3D游戏开发(第2版)pdf)

编辑:rootadmin

推荐整理分享Unity3D游戏开发之塔防游戏项目讲解(下)(Unity3D游戏开发(第2版)pdf),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3D游戏开发,Unity3D游戏开发(第2版)pdf,Unity3D游戏开发(第2版),Unity3D游戏开发(第2版),Unity3D游戏开发(第2版),Unity3D游戏开发毕业论文,Unity3D游戏开发毕业论文,Unity3D游戏开发(第2版),内容如对您有帮助,希望把文章链接给更多的朋友!

各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是 在上一篇文章中,我们从塔防游戏的三个组成要素地图、敌人、防守单位对塔防游戏进行了较为全面的阐述,并通过实例完成了塔防游戏的第一部分:地图篇。那么我们今天来继续完成这个塔防游戏的开发,首先我们来看第一部分:敌人篇。

敌人篇

敌人在游戏中有一个基本的行为,即沿着寻路路径向我方阵地移动并发起攻击。在地图篇中,我们详细地介绍了敌人寻路路径的生成原理。既然有了敌人寻路的路线,那么怎么让敌人沿着路线移动呢?其实只要指定敌人寻路的起点,因为在寻路路径的设计中,我们使用的是一个类似于链表的结构,这样我们就能根据每个结点获取它的目标结点,从而实现敌人沿着寻路路径移动的效果了。因为敌人寻路的路线是定义在PathNode类中的,因此我们可以写出下面这样的代码:

好了,现在我们来一起分析这段代码。首先,我们计算了敌人与路径结点间的距离,这里我们用0.1来近似地表示敌人已经到了路径结点上,此时如果该结点的目标结点为null则表示此时敌人已经到了最后一个结点处,所以敌人会对我方的阵地造成点的伤害并销毁敌人。在GameManager我们使用了一个列表来管理和维护当前场景中的所有敌人,因此当当前敌人销毁时需要从列表中移除,GameManager类是一个静态类,负责对游戏的全局维护,这个类我们放到稍后来讲啊。那么如果敌人没有走到最后一个结点怎么办呢?我们只需要将StartNode指向StartNode的目标节点,这样我们就可以对整个路径结点实现遍历。这里是不是有种数据结构的感觉呢?哈哈,数据结构和算法是编程中最基础、最重要的内容,这些内容到了游戏开发领域同样是适用的。那么,好了,既然知道敌人是怎么移动的,现在我们就来对敌人进行移动吧,这里是采用计算移动方向的方式来实现,这个很简单啦。

好了,现在我们来说说敌人的血条吧,我们知道当怪物沿着寻路路径向我方阵地发起攻击的时候,我方防守单位会自动地对敌人进行防御性攻击,那么此时血条就可以显示敌人的实时血量,从而方便玩家根据战场的情况来调整兵力部署情况。我们知道从Unity4.6以后Unity开始使用全新的GUI系统UGUI,因为博主在之前的项目中一直使用NGUI,加上博主不是很喜欢做UI,所以每次用NGUI的时候整个人的心情都是不好的,有段时间被NGUI虐得体无完肤,感觉整个人都不好了。好了,既然现在我们有了新的选择UGUI,那么就让我们先睹为快吧!如图,全新的NGUI位于GameObect->UI菜单下,基本覆盖了常用的如Button、Image、Slider、ScrollBar等控件,因为UGUI刚推出不久,所以博主希望大家还是能客观、公正的对待UGUI和NGUI,博主认为在短期内这两个GUI系统将处于共存的状态,不存在相互替代的可能性。 好了,UGUI所有的控件都是放到一个叫做Canvas的父控件下的,这一点和NGUI的UIRoot有些类似吧!Canvas提供了三种模式的UI系统,即Screen Space-Overlay、Screen Space-Camera、World Space。第一种Screen Space-Overlay它是完全以当前屏幕的像素大小创建的一个矩形范围,即控件是以屏幕坐标来绘制的;第二种Screen Space-Camera它是根据相机的视线范围来确定的一个矩形范围,其控件是根据Camera的ViewPortPoint坐标来绘制的;第三种从名称我们就可以知道,它是完全3D化的UI,使用的是常用的世界坐标。博主是刚开始研究UGUI,如果有不对的地方还希望大家能够原谅啊。好了,下面我们正式来做血条吧,在这里我们使用的是默认的Slider控件,用Slider控件来制作血条需要将Slider控件自带的滑块删除,然后我们通过改变value就可以实现一个简单的血条了。在UGUI中所有的图片素材都是以Sprite的形式来出现的,所以UGUI可以自己生成图集,不需要像NGUI在做UI前首先要生成图集。这是博主做的一个简单的血条。现在血条做好了,可是问题来了:这UGUI的所有控件都必须要放到Canvas下面啊,所以我们没法像NGUI一样直接把做好的血条放到怪物下面。怎么办呢?既然不能放到怪物下面,那我们就放到Canvas下面吧,不过我们需要自己计算血条的位置。好了,下面来看代码:

在这里我们做了三件事情: * 第一,在Awake方法中我们首先计算出血条的位置然后在这个位置生成血条,并取得相关的变量备用。 * 第二,在Update方法中增加一个UpdateHPBar方法以实现对血条血量的更新。 * 第三,增加了一个SetDamage方法,当敌人血量为0时销毁自身、销毁血条、从敌人列表中移除敌人 好了,到现在为止,对于敌人的逻辑我们就全部实现了。可是我们知道在塔防游戏中敌人通常是一波一波出现的,所以我们需要一个敌人生成器EnemySpawn。那么,怎么来生成敌人呢,这里我们使用Xml文件来配置要生成的敌人列表,首先我们来构建一个Xml文件:

Unity3D游戏开发之塔防游戏项目讲解(下)(Unity3D游戏开发(第2版)pdf)

从这个Xml文件中我们可以看到这样一个结构:

在SpawnData这个结构中,我们可以得到敌人攻击的波数、敌人的名称、敌人等级、敌人生成需要等待的时间,因为博主在游戏中只有一种敌人,所以敌人的名称都是一样的。好了,现在我们可以开始解析Xml了:

那么好了,在解析完Xml后我们得到了所有的敌人数据,接下来我们只需要按照顺序生成敌人就可以了。具体怎么做呢,我们知道在塔防游戏中生成敌人有两种情况: * 一个是要生成的敌人和当前敌人是同一波的,这种情况只要继续生成就好了。 * 一个是要生成的敌人的波数大于当前波数,这种情况需要等待这一波敌人被消灭完。 好了,现在来写代码:

我们可以注意到,到现在为止敌人相关的内容博主都已经为大家讲解完了,这里博主和大家开了一个小玩笑,不知道大家有没有发现,在敌人的Xml配置文件中博主最后设计了一个等级为级的敌人,哈哈,这个敌人在游戏中的特点大家要自己从代码中来探索了,大家可以按照博主的思路做出这个塔防游戏然后自己去试试看,相信大家会更加深刻地理解数值平衡的重要性吧!

防守单位篇

防守单位是塔防游戏中玩家可以支配和控制的一种资源,玩家通过合理地分布防守单位的位置来对玩家的防守阵地进行防御,当玩家的防守阵地被摧毁时玩家将无法继续部署防守单位。这就是防守单位在游戏中的主要作用。通常为了增加游戏的可玩性,游戏设计者往往会设计多种防守单位,在博主的这个小游戏中,我们只设计了一种防守单位,更多的防守单位的设计大家可以参考《保卫萝卜》和《植物大战僵尸》这两个游戏。好了,说了这么多,那么防守单位在整个塔防游戏中主要的作用是什么呢?答案就是防守,哈哈,这是一句不折不扣的废话。可是就是这样一句废话,却足以让我们知道防守单位需要对敌人进行自动攻击,这就要涉及到简单的AI算法了。好了,我们来看下面的脚本:

防守单位的脚本定义在Defender这个类中,主要的行为有两个,即发现敌人后转向敌人、向敌人发射炮弹,这块的代码较为简单,大家自己去领会就好啦。我们知道在塔防游戏中玩家可以通过点击屏幕来自由地增加或移动防守单位,这部分的内容主要是和GUI相关的,因为目前博主对UGUI掌握地还不是很熟,所以就等以后博主有时间了再来补充吧!好了,这个塔防游戏的讲解教程就是这样了,希望大家能够喜欢,我知道大家等这篇下篇已经好久了,哈哈! 最后想说的是,博主的独立博客

Unity3d接入googleplay内购详细说明(一) 因为本文内容比较多,整理花费时间比较长,故分几篇完成,以下为本文目录结构,方便查阅:Unity3d接入googleplay内购详细说明(一)引言一、准备条件

Unity3d接入googleplay内购详细说明(二) 因为本文内容比较多,整理花费时间比较长,故分几篇完成,以下为本文目录结构,方便查阅:Unity3d接入googleplay内购详细说明(一)引言一、准备条件

Unity3d接入googleplay内购详细说明(三) 因为本文内容比较多,整理花费时间比较长,故分几篇完成,以下为本文目录结构,方便查阅:Unity3d接入googleplay内购详细说明(一)引言一、准备条件

标签: Unity3D游戏开发(第2版)pdf

本文链接地址:https://www.jiuchutong.com/biancheng/382558.html 转载请保留说明!

上一篇:【三消游戏】第四节,添加声音和爆炸效果,利用协程完善交换过程等(三消游戏攻略)

下一篇:Unity3d接入googleplay内购详细说明(一)(unity3d接入抖音广告api)

  • 一般纳税人附加税优惠政策2023
  • 什么是工程销项表
  • 外购商品发给员工增值税要怎么算
  • 增值税电子普通发票怎么作废
  • 税控盘技术维护费申报时候怎么填报
  • 投资收益科目在贷方
  • 外企当年利润能赚多少
  • 耕地占用税的账务处理
  • 生产型企业付的消防年检费记什么科目
  • 借别人钱收据怎么写
  • 余利宝怎样
  • 房地产开发企业资质管理规定
  • 差额纳税的会计处理
  • 无形资产入账价值包括注册费吗
  • 上月作废的发票忘了作废,怎么做账
  • 研发的样机属于固定资产吗
  • 财务每月需要报哪些税
  • 软件行业研发费用比例有要求么
  • 社保企业报盘是什么
  • 代开专票不满10万的要交附加吗?
  • 如何制作macos bigsur的启动盘
  • apple ID怎么解绑设备
  • 王者荣耀中吕布的克星
  • 预付账款补付货款分录
  • 费用已付款跨年怎么做账
  • pc安装苹果系统
  • win11系统怎么删除账户
  • 广告公司发生的广告代工费账务怎么处理
  • kcleaner.exe是什么
  • postman如何设置token
  • 小规模核定征收突然转查账
  • 领用材料已抵扣进项税
  • 珊瑚礁区域常有的鱼类
  • 处理固定资产怎么交税
  • 马赛马拉国家保护区内动物
  • 手把手教你如何套路男神
  • 如何在织梦中设置图片加文字
  • 退回税款如何做账
  • 增值税附加税减免政策2022年
  • 会计月末账务处理方法
  • centos安装nmtui
  • 劳务公司社保手续办理
  • 关联方利息支出税前扣除规定
  • 计提提成是什么意思
  • 软件产品增值税即征即退
  • 资产负债表编制
  • 机械租赁收入算成本吗
  • 打印银行电子回单有断号
  • 个人所得税征税对象是什么
  • 营业外收入的账户核算有哪些
  • 差旅费所得税扣除标准2023
  • 涉及销售费用如何计算
  • 企业在期间新购进的设备、器具
  • 小规模公司用什么成本核算方法
  • 消防设施 房产税
  • 在什么情况下会冻结微信零钱
  • 免抵税额和免抵退税额一样吗
  • 私营企业主的现金流特征
  • win8 怎么样
  • fedora安装中文语言包
  • vmware左侧的虚拟机名称不见了
  • vs显示进程已退出
  • linux系统检测
  • 怎么操作win10系统
  • linux比较两个文件的差异
  • 打开 itunes
  • macos dock
  • scrnsave.exe
  • win10/win8.1/win7系统遇到中英文输入法无法切换怎么办?
  • cocos2dx怎么安装
  • javascript总结
  • android adbd
  • 批处理的应用
  • css ie6 ie7 ff的CSS hack使用技巧
  • jquery中ajax处理跨域的三大方式
  • shell脚本调用脚本
  • html购物网站
  • jquery操作表单
  • 厦门市无纸化税务局官网
  • 北京市地方税务局土地增值税清算管理规程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设