位置: 编程技术 - 正文

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)

  • 广东税务是什么
  • 纳税人对所提交信息的什么负责
  • 开给个人的普票购买方怎么写
  • 出库单上面的单位写谁的
  • 固定资产一次性折旧的账务处理和税务处理
  • 去年发生的成本怎么算
  • 电子发票报销怎么用
  • 金融企业往来收入是指
  • 合并报表时存货怎么处理
  • 2018年城镇医保
  • 所得税汇算清缴退税会计分录怎么做
  • 公车补贴计入什么科目
  • 公司收内部职工停车费如何确认收入?
  • 服务费专票普票
  • 微税平台抄税的步骤是怎样的?
  • 环保税和环境税一样吗
  • 2020年安装费的增值税税率是多少
  • 个体工商户的税收优惠政策有哪些
  • 给行政事业单位扣缴义务人的一封信
  • 损失性费用的会计科目有
  • 其他资本公积核算内容
  • 研发费用领用材料
  • 退税指导
  • 工程施工购买的材料费会计分录
  • 对公帐户收款
  • 什么是减值测试方法
  • 所得税和应交所得税
  • nfcmp3
  • 实收资本的会计编码
  • 国家公园好玩吗
  • 实际交印花税会计分录
  • 设置php扩展路径
  • php中实现文件上传需要用到哪几个函数
  • content security policy blob
  • 零基础舞蹈培训
  • 委托 研发费用
  • 国有资产无偿划转的会计处理
  • python3 zipfile模块
  • sqlserver2012安装好了桌面没有图标
  • 什么是投资收益率
  • 资产管理公司的监管部门是谁
  • 代缴纳房产税
  • 认缴制下入股资产怎么算
  • 发票专用章和财务专用章可以同一人保管吗
  • 未开票收入如何计提增值税
  • 个税申报系统非正常可以改为正常吗?
  • 应付账款不需要支付了会计怎么处理
  • 采购商品未入库已经付款会计分录
  • 车间消耗品的会计分录
  • 返还的个税如何做分录
  • 提取的安全生产费
  • 非贸付汇计税基础
  • 库存股算什么科目
  • 印花税多久申报一次2023
  • 销售费用和管理费用的税前扣除
  • 营业执照类型有限责任公司(自然人独资)是什么行业类别
  • 公司购买一台电脑,会计科目怎么办
  • 工程设计费收入在所得税申报表应填入
  • 如何结转完工产品成本和已销产品成本
  • 车间成本项目如何结转
  • 企业残保金如何计算
  • mysql删除有外键关联的数据
  • sql you
  • win7系统计算机管理功能打不开
  • win8系统笔记本出现意外错误
  • 简述操作系统更新设置方法
  • 怎么用ubuntu
  • 键盘和鼠标冲突
  • win8热点设置
  • 苹果电脑mac设备怎么删除
  • spool.exe - spool是什么进程
  • linux cp的用法
  • 文本框后缀
  • linux怎么安装rz
  • 在javascript中逻辑运算符包括
  • jquery加载图片
  • js如何实现图片懒加载
  • 海口市哪个地方最漂亮
  • 完税证明在哪里查询打印
  • 国税系统如何变更财务负责人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设