Unity3D游戏开发之塔防游戏项目讲解(上)

合集下载

基于Unity3D的塔防游戏的研究与实现

基于Unity3D的塔防游戏的研究与实现

本科毕业设计(论文) 基于Unity3D的塔防游戏的研究与实现Research and Implementation of Tower Defense Game Based on Unity3D毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。

对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。

本人完全意识到本声明的法律结果由本人承担。

毕业论文作者(签字):签字日期:年月日成绩评定注:毕业设计(论文)成绩按百分制评定。

答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。

摘要21世纪20年代,游戏已经成为了大众经常选择的娱乐方式。

其中,Unity3D作为时下热门的游戏开发引擎,不仅功能完善易上手,还可以免费使用成本低,理所当然的被许多游戏开发者所使用。

Unity3D作为一款全面整合的专业游戏引擎,可以让开发者轻轻松松的去创建3D游戏、建筑可视化、实时3D动画等功能,其优秀的跨平台性使得Unity3D可以运行在包括但不只含于Windows、Android 和Mac等平台。

本次的毕业设计,将实现windows平台游戏的开发,使用Unity3D 游戏开发工具,编写代码为C#语言,开发制作一款名为《方块防线》3D塔防游戏,并在制作的过程中将对项目的需求、游戏的设计和具体的实习方法进行分析。

关键词:塔防3D游戏Unity3D Windows平台AbstractIn the 2020s, games have become a popular entertainment method. Among them, Unity3D, as a popular game development engine, not only has perfect functions and easy to use, but also can be used for free and with low cost. Of course, it is used by many game developers. As a fully integrated professional game engine, Unity3D allows developers to easily create 3D games, architectural visualization, real-time 3D animation and other functions. Its excellent cross-platformity allows Unity3D to run on but not only on Windows , Android and Mac platforms.This graduation project will realize the development of windows platform games. Use Unity3D game development tools, write code for C # language, develop and produce a 3D tower defense game called "Cube Tower Defense", and in the process of making Analysis of project requirements, game design and specific internship methods.Key Words:Tower defense;3D games;Unity3D;Windows platform目录第1章绪论 (1)1.1引言 (1)1.2Unity3D介绍 (1)1.3 C#脚本语言介绍 (2)1.4市场分析与意义 (2)1.5项目的简介 (3)第2章Unity3D界面及基本操作 (3)2.1 Unity3D的界面 (3)2.2Unity3D的基本操作 (6)2.2.1 Unity3D菜单栏 (6)2.2.2 Unity3D工具栏 (7)2.2.3 Unity3D常用快捷键 (7)第3章游戏策划 (7)3.1游戏的简要介绍 (7)3.2背景与情节 (8)3.3游戏的炮塔、怪物和场景的素材与设计 (8)3.3.1炮塔的设计 (8)3.3.2怪物的设计 (9)3.3.3游戏场景设计 (10)3.4 游戏操作方法 (11)第4章游戏的设计与实现 (11)4.1 准备游戏工程 (11)4.2地图的设计 (13)4.3模型和材质的导入 (15)4.4怪物及其脚本设计 (15)4.4.1怪物的移动 (15)4.4.2怪物的生成 (17)4.4.3怪物的死亡 (19)4.5炮塔及其脚本设计 (20)4.5.1炮塔的建造 (20)4.5.2炮塔的升级与拆除 (25)4.5.3炮塔的攻击 (28)4.5.4炮弹的生成及其功能 (30)4.5.5玩家视野的移动 (31)4.5.6玩家的失败和胜利条件 (32)4.6 UI界面的设计 (33)4.6.1炮塔的选择UI (33)4.6.2炮塔的升级与拆除UI (33)4.6.3怪物的血条 (34)4.6.4金钱的显示与更新 (35)4.6.5游戏胜利与失败的界面 (35)4.7游戏开始场景的设计 (36)4.8游戏测试和试玩 (37)4.8.1游戏的打包 (37)4.8.2游戏的最终成果 (38)第5章总结与展望 (39)参考文献 (40)致谢 (41)第1章绪论1.1引言游戏,最早出现记录的游戏是一款电子游戏,其为一款井字棋游戏,需要在真空管计算机上运行。

Unity3D技术学习之塔防游戏项目讲解(上)

Unity3D技术学习之塔防游戏项目讲解(上)

[Unity3D]Unity3D技术学习之塔防游戏项目讲解(上)通常意义上讲,塔防游戏是指一类在地图上建造炮台或者类似建筑物来阻止敌人进攻的策略类游戏。

从这个概念中,我们可以快速地抽离出来三个元素,即地图(场景)、敌人、炮台(防守单位)。

当我们抽离出来这样三个元素后,现在塔防游戏就变成了这样的一种描述,即敌人按照地图中设计的路径进攻,玩家利用防守单位进行防守的一类策略游戏。

经典的塔防游戏有哪些呢?比如我们最为熟悉的《植物大战僵尸》、《保卫萝卜》都是塔防类游戏的经典游戏。

如果我们将塔防游戏中的防守单位的范围扩大到玩家,那么像《英雄联盟》这样的游戏同样是可以称之为塔防游戏的,因为敌我阵营的最终目的都是要摧毁敌方的防御塔,只是敌我双方都从炮台或者怪物变成了有血有肉的人物,加之角色扮演(RPG)和即时战略(RTS)等元素的混合渗透,使得这样的游戏从单纯的塔防游戏变成了一款可玩度极高的游戏(天啊,我居然在夸这个游戏.....)。

好了,那么我们就来尝试着做出一个简单的塔防游戏吧,注意是简单的塔防游戏哦,既然塔防游戏的三个要素是地图、敌人和防守单位,那么我们就从这三个方面来着手设计这个游戏吧!在本篇文章中,我们将用到下面的知识:∙Unity2D中的Sprite动画∙Unity3D中的可视化辅助类Gizmos∙塔防游戏中敌人按路径寻路的实现∙Unity3D uGUI的初步探索∙简单的AI算法一、地图篇地图是一个塔防游戏中玩家最为关注的地方,因为地图和敌人将直接影响到玩家的策略。

如图是从《保卫萝卜》游戏中提取的一张游戏地图。

在这张地图中我们可以清楚看到怪物进攻的路径,怪物将沿着地图中的路径向我方防守单位发起攻击。

那么,在游戏中,我们该怎样确定怪物的攻击路径呢?首先我们可以对地图进行下分析,在地图中基本上基本上只有两种类型的区域,即可以放置防守单位的区域和不可放置防守单位的区域两种。

由此我们可以设计出下面的结构:[csharp] view plaincopying UnityEngine;ing System.Collections;3.4.[SerializeField]5.public class GridNode : MonoBehaviour6.{7.public enum NodeType8.{9.CanPlace,10.CantPlace11.}12.13.public NodeType GridNodeType=NodeType.CanPlace;14.}可以看出,我们在GridNode类中定义了一个称为NodeType的枚举类型,这个枚举类型有两个值,CanPlace表示可以放置防守单位,CantPlace表示不可以放置防守单位。

基于Unity3D的塔防类游戏的设计与实现

基于Unity3D的塔防类游戏的设计与实现

2021年1月10日第5卷第1期现代信息科技Modern Information TechnologyJan.2021 Vol.5 No.1842021.1收稿日期:2020-11-18基金项目:武汉市教育科学“十三五”规划重点课题(2017A071);武汉市教育局教学研究项目(2019068);江汉大学研究生科研创新基金项目(Jhdxyjs17kz003)基于Unity3D的塔防类游戏的设计与实现张越,陶俊,徐迅(江汉大学 人工智能学院,湖北 武汉 430056)摘 要:文章基于Unity3D 开发引擎,设计并制作了一个塔防类的3D 游戏。

主要分为两个模块,一是敌人功能的设计,包括敌人按照规定路线移动,敌人受到攻击扣除血量等;二是防御塔的设计,包括对敌人进行攻击,建造、升级、拆除防御塔等功能设计。

使用了3ds Max 软件建造角色和场景的模型,最后在Unity3D 中实现游戏的开发,结果表明敌人和防御塔设计合理,游戏体验良好。

关键词:Unity3D ;塔防类游戏;C#脚本;3ds Max 中图分类号:TP317文献标识码:A文章编号:2096-4706(2021)01-0084-04Design and Implementation of Tower Defense Game Based on Unity3DZHANG Yue ,TAO Jun ,XU Xun(School of Artificial Intelligence ,Jianghan University ,Wuhan 430056,China )Abstract :This paper designs and produces a tower defense 3D game based on Unity 3D development engine. It is mainly dividedinto two modules ,one is the design of the enemy function ,including the enemy moving according to the prescribed route ,the enemybeing attacked deducting the amount of blood and so on ;the second is the design of the defense tower ,including the attack on the enemy ,construction ,upgrade ,demolition of defense towers and other functional design. The 3ds Max software was used to build the models of the characters and scenes ,and finally the game was developed in Unity 3D. The results showed that the enemy and defense towers were designed reasonably and the game experience was good.Keywords :Unity 3D ;tower defense game ;C# script ;3ds Max0 引 言国内游戏产业突飞猛进的发展和手机的快速普及,根据市场调研公司Newzoo 的数据报告2023年全球玩家将达30亿。

基于Unity3D的塔防游戏关键技术的研究与实现

基于Unity3D的塔防游戏关键技术的研究与实现

手机触屏
文 献标识码 : A
新建 U n i t y工 程 S h e e p Wa r ,在 As s e r t s 文件夹导入 F X B
中图分类号 : T P 1 1 . 5 2
1引 Байду номын сангаас
塔 防 游戏 是 一 款经 典 的 益 智类 游 戏 ,经 典 模 式 之 一 为 堵 和 P N G 等 模 型 资 源 ,并 陆 续 创 建 Ma t e r i a l 、Mo d e l 、P r e f a b 、 怪模 式 , 一张作战地图, 让 怪 兽 按 照 你 设 定 的 路线 来 回移 动 , 让 玩 家 炮塔 按 照设 定 的位 置 进 行 创 建 , 并 通 过 使 用 特 效技 能 , 以便 于 炮 塔 不 断 地轰 击 敌人 , 从而获得游戏的胜利。 卫 萝 》 等 塔 防游 戏 的 流 行 己充 分 说 明很 好 的 娱 乐性 , 同时 随 S c e n e s 、 S c r i p t s 等文件夹进行分类管理 。 设 计 典 型 多个 游戏 场 景和分关卡, 在 游 戏 管 理 器 的 脚 本 中进 行 管 理 和链 接 。
地形编辑、 着色器、 脚本 、 网络、 物理、 版本控制等特性, 集成了 使用地形编辑工具进行绘制和美化 , 利用地形编辑器中的 7 个 强大的 P h y s x物理 引擎 , 支持 J s 、 c ≠ } 等脚 本语 言, 内置了大量 关 键 功 能 设 置 高低 的 拉 高 降低 用 于 构 建 山壑 ,使 用 平 滑 工 具 的常用 S h a d e r 效果供开发者使用 , 支持发布 游戏 至 P C 、 i OS 、 去除 明显的棱角, 通过贴图工具为地形刷上漂亮的贴图, 如土 安卓等多种平 台, 也能利用 U n i t y网页插件发布为 网页游戏 。 黄、 绿色等 , 使用植树工具放置一些高低密度不 同的树模型植

基于unity3D的塔防游戏开发

基于unity3D的塔防游戏开发

2018年29期创新前沿科技创新与应用Technology Innovation and Application基于unity3D 的塔防游戏开发*仲晓庆,蔡朝晖(大庆师范学院计算机科学与信息技术学院,黑龙江大庆163712)引言近年来,迅速发展的手机游戏、网页游戏和PC 游戏已经成为游戏行业主流。

随着玩家对游戏的沉浸感和体验感的要求逐渐增加,3D 游戏成了当前游戏发展的主要热点[1]。

unity3D 游戏引擎为开发者提供了创建高质量3D 游戏和真实视觉效果的核心技术,为3D 游戏的开发提供了强大的推动力[2]。

塔防,炮塔防御(Tower Defence ,TD )的简称。

作为一个经典的休闲游戏类别,塔防游戏从来没有过成为真正的主流游戏,但却始终都保有相当数量的忠实玩家,塔防游戏从产生到现在20余年,用不温不火来形容完全不为过。

不过,随着现在整个游戏行业在玩法上的细化与创新,塔防类游戏也迎来了又一个春天,一些玩法和类别更多样的塔防游戏开始问世———如手游市场上的《保卫萝卜》,客户端网游领域的《植物大战僵尸》等等。

而塔防这一经典的游戏玩法类型或许将在这一趋势当中迎来前所未有的发展机遇。

本文使用unity3D 引擎开发的这款3D 塔防游戏内容丰富,游戏体验良好,这类策略游戏不仅可以使玩家娱乐,还能使玩家的智力得到很好的提升。

1游戏分析此款塔防游戏的玩法规则是地图的一端自动出兵攻击地图的另一端,在敌人行动路线的两边玩家可按照自己的思路放置防御塔来阻止敌人的攻击,一旦防御塔的放置位置不对,或者所选择的防御塔攻击速度不够快,就阻止不了敌人的攻击,那么敌人就很容易攻入玩家大本营,玩家便输了。

所以要求这类策略游戏要给玩家尽量大的个人发挥空间[3]。

要达到这一点,可以从多方面着手:1.地图;2.防御塔;3.敌人;4.玩家血量;5.游戏金币。

下面分别介绍。

地图:游戏设计要控制敌人从出生点开始,按照事先设计好的路线到达终点,路线越不固定越多样化越好,这就要求设计一个更为合理的敌人路线,来改变敌人原有的最短路线,或者把敌人到达终点的路线变得更长,为防御塔的攻击提供更长的时间,从而达到消灭敌人的目的。

基于Unity3D的塔防游戏设计与实现

基于Unity3D的塔防游戏设计与实现

基于Unity3D的塔防游戏设计与实现作者:刘俊郭祖江来源:《科技传播》2015年第05期摘要以游戏场景设计与开发、AI(人工智能)、ShaderLab(着色器)系统为主要研究目标,阐述游戏场景规设计,分析AI设计过程中的主要思路和主要算法的实现。

通过高效的、复杂的AI系统,以及ShaderLab开发创造出游戏中更加真实的行为,丰富的画面效果。

实践证明,该技术具有一定的实际应用价值。

关键词 Unity3D;AI;ShaderLab中图分类号TP39 文献标识码 A 文章编号 1674-6708(2015)134-0152-03近几年来,Android平台游戏、iPhone平台游戏以及Web的网页游戏迅猛发展,已经成为带动游戏产业发展的中坚力量。

遗憾的是目前除了少数的作品成功外,大部分的游戏属宣传攻势往往大于其内容品质,加之玩家体验游戏时,对游戏的沉浸感和操作性的要求也逐渐提高。

在这种局面下,3D游戏成为当前游戏的发展热点。

而本文所采用的Unity3D游戏引擎提供了创造高质量的3D游戏和真实视觉效果的核心技术,为开发3D游戏提供了强大的驱动力。

本文基于Unity3D游戏引擎,研究游戏中AI设计过程的主要思路和主要算法实现,通过高效复杂的AI系统以及特定的shaderLab(着色器)编程开发一款基于Unity3D的3D塔防类游戏,使之具备丰富的画面而且保证游戏运行的流畅度。

实践证明,本文所讨论的关键技术可以应用于增强现实、游戏开发等多个领域,具有一定的实际应用价值。

1游戏场景塔防游戏的基本玩法比较类似,在场景中我方有一个基地,敌人从场景的一侧出发,沿着相对固定的路线攻打基地。

我方可以在地图上布置防守单位,攻击前来进攻的敌人,防止他们闯入基地。

本游戏的场景通常比较简单,就像一个棋盘格,可以在上面摆放防守单位,并专门留给敌人一个通道。

在本游戏中,使用二维数组来表示场景中的格子,每个格子只有两种状态,允许摆放防守单位或不允许。

使用Unity创建塔防游戏(Part3)——项目总结

使用Unity创建塔防游戏(Part3)——项目总结

使⽤Unity创建塔防游戏(Part3)——项⽬总结 之前我们完成了使⽤Unity创建塔防游戏这个⼩项⽬,在这篇⽂章⾥,我们对项⽬中学习到的知识进⾏⼀次总结。

Part1的地址: Part2的地址: ⾸先,在我们开展这个项⽬之前,必须具备Unity的基础知识,例如如何添加游戏资源和组件,理解预设体(prefabs)以及⼀些C#的编程基础。

可以点击来学习这些基础知识。

不论是做2D游戏还是3D游戏,搭建好游戏场景是第⼀步,由于在⼯程中已经包含了背景和UI设置好的场景,所以我们只需要在这基础之上进⾏即可。

为Game视图设置合适的显⽰⽐例,可以保证场景中的Lable(标签)能够正确对齐。

prefab 快速创建prefab的⽅法:将游戏对象从Hierarchy视图拖拽到Project视图。

将Project视图中的prefab拖拽到场景视图中,就能以此prefab创建出⼀个游戏对象来,重复多次就能创建多个这样的对象了。

为脚本中的prefab对象赋值,将prefab从Project视图拖拽到Inspector视图。

假如我们为prefab添加了⼀个游戏组件(例如,脚本、刚体、碰撞体等),那么场景中所有以此prefab创建的对象都会拥有这个游戏组件。

快速复制prefab:传统的Ctrl + C,Ctrl + V不可⾏,Unity提供了快捷键 Ctrl + D,即Duplicate命令。

选中prefab后,按下Ctrl + D即可。

同理,也可以⽤于其他类型资源的复制。

项⽬中遇到的BUG:⼩怪兽的所有形态都叠在⼀起,原因:当⼀个prefab下有多个⼦sprite时,若未指定显⽰哪个⼦sprite,则当游戏对象被创建出来后,所有的sprite都会被显⽰出来。

解决办法:在创建游戏对象的时候,指定要显⽰的sprite。

脚本中数据初始化 通常我们在Start() 中进⾏数据初始化,但考虑脚本中⽅法执⾏顺序的问题,有些操作必须放在Start()之前的⽅法(例如,Awake()、OnEnable() )中做。

基于untiy3d的塔防单机小游戏设计

基于untiy3d的塔防单机小游戏设计

技术应用TECHNOLOGYANDMARKETVol.27,No.3,2020基于Untiy3D的塔防单机小游戏设计郭建军,林丽君,陈红斌通信作者,王克强,蔡 肯(仲恺农业工程学院自动化学院,广东广州510225)摘 要:利用Unity3D游戏引擎设计出一款3D塔防单机小游戏的全过程,这款3D塔防单机小游戏不仅能在PC端完美流畅运行,而且可以适配给Android端,在手机上运行这款游戏。

游戏会先在Unity3D软件中进行测试,方便修改。

测试完毕便封装打包,在PC端和Android手机上分别进行测试然后分析测试的结果。

关键词:Unity3D;塔防游戏;Androiddoi:10.3969/j.issn.1006-8554.2020.03.053 引言随着游戏的发展,人们对游戏的要求也越来越高,更多人希望玩到有趣的游戏的同时,体验到游戏的高品质画面和流畅性。

3D游戏的游戏体验比2D游戏的游戏体验好很多,所以我们想要做这么一款3D游戏非常符合游戏产业发展的道路。

而3D游戏如果能和手机端合体,那么带来的效益通常会出乎人们的意料。

谈到手机端,人们自然会想到Android系统,本次设计就打算将运行平台锁定在PC端和Android端,让人们的游戏在Android端也可以畅玩。

由于考虑到游戏的多平台性,故而选择Unity3D软件来制作本次设计。

 游戏开发准备1.1 Unity3D的简介Unity3D是一个功能强大且非常专业的游戏引擎,它是由UnityTechnologies开发得到的,而UnityTechnologies开发其的目的是让所有使用者能够非常容易的创建一些3D的视频游戏、让建筑全方位可视化、3D动画实时播放等类型的互动内容,并且Unity3D还具有多平台性。

和Director等软件一样,Unity3D非常注重其图像图形的渲染。

Unity3D这款强大的游戏引擎能够运行在微软系统的电脑和苹果系统的电脑下,并且能够把游戏发布至超过5种常见的平台。

unity3d塔防游戏的设计与实现__毕业设计论文

unity3d塔防游戏的设计与实现__毕业设计论文

江海职业技术学院毕业设计毕业设计题目:unity3D塔防游戏的设计与实现学生学号: 141010155 学生姓名:踪训军所在系(部):信息工程系专业及班级:计算机1401 指导教师:谭程宏完成日期: 2017-02-10摘要游戏,目前已经是最大众化的娱乐之一。

Unity是这几年非常热门的一种开发引擎之一。

它具有非常强力的跨平台能力,其中还包含了图形、音频、物理系统、网络等多方面的引擎支持,是一个2D、3D游戏引擎套件和游戏开发工具,并且有一个非常强大的编辑器来整合这一切,因此被广大游戏开发者所喜爱。

本次毕业设计,围绕手机游戏开发的实现,利用Unity3D游戏开发工具,基于C#语言编写,开发制作一款手机游戏塔防游戏《突破重围》,并对项目需求及游戏的设计和具体实现进行分析。

关键词塔防,手机游戏,Unity3D,Android目录第1章绪论 (5)1.1论文结构安排 (5)1.2市场需求分析 (6)1.3项目的简介 (6)第2章unity3D介绍 (6)2.1 Unity3D总体概述 (6)2.2 Unity3D软件特色 (7)第3章游戏概要设计 (8)3.1整体游戏需求 (8)3.2游戏截图 (9)3.3 设计概要 (10)3.4游戏类图 (11)3.5游戏流程图 (12)3.6游戏主要功能设计 (14)3.6.1开场插画 (14)3.6.2选关界面的效果 (14)3.6.3模型动画的切换 (14)3.6.4敌人的AI实现 (15)3.6.5释放技能特效的实现 (17)3.6.6主角的行走路线 (17)3.6.7游戏中的碰撞检测 (18)第4章游戏具体实现 (18)4.1程序实现 (19)4.1.1 Emnimy (19)4.1.2 Player (20)4.1.3 GameControl (21)4.1.4 Level (22)4.1.5 MainMenu (23)4.1.6 Moneydate (24)4.1.7 SkillData (25)4.1.8 SkillManger (26)第5章结论 (29)参考文献 (30)致谢 (30)第1章绪论1.1论文结构安排1。

基于Unity3D引擎的游戏设计与开发

基于Unity3D引擎的游戏设计与开发

基于Unity3D引擎的游戏设计与开发引言近年来随着计算机物理硬件的提升以及社会经济的进步,游戏技术也得到了空前的发展。

无论是游戏引擎还是玩法,都得到了长足的进步。

Unity是一款由Unity科技公司所设计的可跨平台的2D与3D游戏引擎,其支持开发Windows 等电脑平台、任天堂Switch等主机平台以及Android等移动设备的各种游戏,以及基于WebGL技术的网页平台以及TVOS等多媒体平台。

塔防是指通过在地图上建造各种各样的炮塔来阻止游戏中的敌人抵达指定位置的实时战略计算机游戏,此类游戏的目标是生存若干时间或尽可能生存下去。

玩家一般有生命值,生命值以敌人数量为基准,如果敌人在到达指定地点之前没有被消灭,玩家就会减少生命。

随着怪物波次的增加和炮塔属性的逐渐提升,怪物的数量、属性以及各种特殊能力也会提升。

目前国内外许多专家在Unity平台研发了多种游戏,如伍传敏等人基于Unity3D完成了第一人称射击游戏的设计与开发。

张典华等人基于Unity3D实现了多平台兼容的三维空战游戏。

刘晋钢等人则研究了Unity3D与Kinect整合数据技术在体感游戏中的应用价值。

本文通过C++设计并实现了一款基于Unity3D引擎的TowerDefence游戏,实现了怪物AI设置,攻击检测算法的设计以及游戏特效和渲染管道等关键技术。

游戏运行流畅,画面精良,操作简单,体验丰富,上线后收获大量好评。

1 游戏设计1.1 塔防游戏设计策略本文的塔防游戏玩法设计遵循以下原则:(1)玩家放置的障碍物可以在障碍物摧毁基地之前伤害或杀死敌方攻击者。

(2)修复障碍物的能力。

(3)升级障碍物的能力。

(4)能够修复障碍物的升级。

(5)用于购买升级和维修的某种货币(可以是时间,游戏内货币或经验值,例如通过击败攻击单位而获得的货币)。

(6)能够一次穿越多条路径的敌人。

(7)每波通常有固定数量和类型的敌人。

(8)许多现代的塔防游戏都从实时游戏发展到回合游戏,其中存在不同的阶段,例如构建,防御,修复和庆祝。

基于Unity引擎制作塔防游戏

基于Unity引擎制作塔防游戏

基于Unity引擎制作塔防游戏
吕学琴;苏闰;陈彦军
【期刊名称】《智能计算机与应用》
【年(卷),期】2018(008)005
【摘要】塔防游戏让玩家可以在游戏中充分发挥想象,根据地形建设出不同种类的炮塔,以此来和不断涌现的敌人进行多轮的交锋.同样是近年在游戏制作界中颇为流行的Unity游戏引擎是一款可以让玩家轻松创建诸如三维游戏、立体动画等类型的综合型游戏开发工具.本论文就是基于Unity引擎制作一款塔防游戏.
【总页数】5页(P95-99)
【作者】吕学琴;苏闰;陈彦军
【作者单位】哈尔滨师范大学数学科学学院,哈尔滨150025;哈尔滨师范大学数学科学学院,哈尔滨150025;哈尔滨师范大学数学科学学院,哈尔滨150025
【正文语种】中文
【中图分类】TP317
【相关文献】
1.基于Unity引擎制作塔防游戏 [J], 吕学琴;苏闰;陈彦军;
2.基于Unity3D的塔防类游戏的设计与实现 [J], 张越;陶俊;徐迅
3.基于Unity3D的塔防类游戏的设计与实现 [J], 张越;陶俊;徐迅
4.基于Unity3D的2D塔防游戏设计与实现 [J], 张宝宝
5.基于Unity3D的2D塔防游戏设计与实现 [J], 张宝宝
因版权原因,仅展示原文概要,查看原文内容请购买。

塔防游戏说明

塔防游戏说明

塔防游戏非常地受欢迎,木有什么能比看着自己的防御毁灭邪恶的入侵者更爽的事了。

在这个包含两部分的教程中,你将使用Unity创建一个塔防游戏。

你将会学到如何:∙创建一波一波的敌人∙使敌人随着路标移动∙创建和升级防御塔,并将敌人销毁最后,你会有一个此类型游戏的框架,之后可在此基础之上进行扩展。

最终效果在本篇教程中,你将创建一个塔防游戏,敌人(小虫子)会朝着你的饼干移动,你可以在一些战略点上,使用金币放置和升级你收下的小怪兽来进行防御。

玩家必须在小虫子抵达饼干之前消灭它们,敌人会随着波数的增加而变得更加强大。

游戏将在玩家在所有波数之后存活下来(游戏胜利),或者有5个敌人抵达饼干之后结束(游戏失败)。

下面是一张完成的游戏截图:准备开始如果你还没有Unity5,请从Unity的官网下载。

同时,下载这个starter项目,解压缩并且使用unity打开TowerDefense-Part1-Starter 这个工程。

starter项目中包括了美术和声音资源,同时还有预设的动画以及一些帮助用的脚本,这些脚本跟塔防游戏没有直接的关系,所以不会再本教程中详细介绍。

但是如果你想要更多的学习关于unity 2d动画的创建,请参考Unity 2D 教程。

项目中同时包含了一些prefab供你稍后扩展用来创建游戏角色。

最后,工程中包含背景和UI设置好的场景。

在Scenes文件夹中找到并打开GameScene, 设置Game视图的显示比例为4:3来保证labels能够正确的在背景中对齐,你在Game视图中看到的应该如下所示:注:一开始我也没弄清楚什么意思,后来理解了是在这里所示的窗口Starter project – check!Assets – check!走向征服世界的第一步(你的塔防游戏...)已经准备好了!可放置点的X 标记小怪兽只能放在标记有X的地方。

从Project Brower中拖动Images\Objects\Openspot到场景中,目前来说放到哪个位置没有关系。

基于Unity3D塔防类手机游戏的设计与制作策略

基于Unity3D塔防类手机游戏的设计与制作策略

基于Unity3D塔防类手机游戏的设计与制作策略作者:李竟来源:《计算机应用文摘》2022年第18期关键词:unity3D;塔防;手机游戏;设计制作国产游戏的发展可谓是突飞猛进,特别是手机游戏种类越来越多。

市场调研报告显示,估计在2023年,全球的手机玩家数量可突破30亿,中国游戏市场发展前景广阔。

塔防游戏属于较为典型的休闲游戏,受到诸多玩家的喜爱,其在设计过程Unity3D的应用必不可少,依托此技術能够为塔防游戏的设计提供方向,优化设计思路,增强玩家的游戏体验,推动3D手机游戏领域的快速发展。

1概述Unity3D属于游戏开发综合类型工具,能够为玩家打造轻松的游戏场景,通过三维视频,建立实时动画,搭建可视化平台。

Unity3D中包含编辑器、地形编辑、脚本、版本控制以及跨平台发布多重功能,能够形成物理引擎( PsysX).可以拒绝多个脚本语言运行,其中还内置Shader效果,便于开发者应用,游戏开发以后能够向Android和iOS等手机平台上发布,还可向PC端发布,或者利用Unity插件来发布网游。

Unity3D和其他类型的游戏引擎存在显著差异,即设计者更为关注游戏体验感和可玩性,并非只追求设计简单[1]。

塔防游戏属于益智类游戏,通过作战地图,使怪兽按照设定路线进行移动,而玩家则可根据设定位置创建炮塔,用特殊技能对敌人发起攻击,最终获得胜利。

手机平台中的《保卫萝卜》《植物大战僵尸》都属于塔防游戏。

当前,移动设备的运行性能日益提升,手机游戏也具备3D视觉体验功能,为塔防游戏的开发提供了良好的环境。

2设计与制作策略2.1《保卫羊村》制作与设计2.1.1游戏设计内容《保卫羊村》等塔防游戏就是利用Unity3D技术完成设计的。

其设计思路是将人物角色划分为“羊村武士”“灰太狼敌人”,二者分别作为防守方和进攻方。

敌人根据地图设计向左方移动,逐渐靠近羊村,并对基地发起攻击,而攻守一方根据防守需求,完成武士角色的动态设置,创建角色展开防守,当武士能够成功消灭一个敌人时,就可以获得对应金币,而金币可以应用在防守投入中。

基于Unity引擎制作塔防游戏

基于Unity引擎制作塔防游戏

基于Unity引擎制作塔防游戏作者:吕学琴苏闰陈彦军来源:《智能计算机与应用》2018年第05期Abstract: The tower defense game allows players to fully use their imaginations in the game,build different kinds of turrets according to the terrain, and use them to make multiple rounds of confrontation with enemies that are constantly emerging. The Unity game engine, which is also popular in the world of game production in recent years, is a comprehensive game development tool that allows players to easily create types such as 3D games and 3D animations. This paper is based on the Unity engine to make a tower defense game.1游戏制作的目标效果塔防游戏的三大要素:敌人、炮塔、地图。

本文中制作的塔防游戏设置4波敌人,每波敌人具备不同的移速和血量,消灭难度递增;设计3种炮塔,每种炮塔各有玄机并且可进阶为威力更强、射程更广的升级版炮塔;地图为15×15的网格形式,其中包括敌人起点、终点以及敌人行进的道路。

玩家通过金币购买炮塔并安置在地图上,炮塔将自动攻击敌人。

敌人将一波一波地轮番出现,每波敌人被完全消灭后才会出现下一波敌人。

如果有一个敌人到达终点,游戏将宣告失败。

当玩家将4波敌人全都消灭时,则判定为胜利[1]。

基于Unity3D塔防游戏的设计与实现

基于Unity3D塔防游戏的设计与实现

0 引言Unity3D 是由Unity Technologies 开发的一个多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

Unity 类似于Director,Blender Game Engine,Virtools 和Torque Game Builder 等利用交互的图型化开发环境为首要方式的软件。

其编辑器运行在Windows 和Mac OS X 下,可发布游戏至Windows 和Android 平台。

也可以利用Unity Web Player 插件发布网页游戏,支持Mac 和Windows 的网页浏览。

1 游戏设计1.1 创建地形1.1.1 创建地形打开Unity3D 软件创建新项目,工程文件保存在D 盘MyGame 文件夹下,创建流程为第一步:点击Terrain 按钮创建一个地形,设置地形的高度为200米;第二步:在Terrain 面板上点击相关属性绘制山峰及湖泊;第三步:为地形添加两种贴图,一种绿色,作为地面颜色,一种灰色,作为山峰的颜色;第四步:绘制敌人攻击路径;第五步:为地形添加两种树木和草地资源;第六步:为湖泊添加水资源。

1.1.2 设置战略要地创建一个圆柱体,放置在地形中合适的位置,将圆柱体的比例调整为10:0.2:10,并为圆柱体创建一个材质球,为圆柱体添加贴图。

其一,是使其更加的醒目,方便玩家找到到战略要地。

其二,是使其符合游戏场景的风格,不至于显得突兀。

1.1.3 导入主角以及敌人模型将怪物模型拖至场景中,将兽型怪物比例调整为2.5:2.5:2.5,将人型怪物比例调整为4:4:4,将主角比例调整为5:5:5。

编写脚本并添加给怪物,使其自身所带有的动画能够播放。

创建控制器为主角添加行走动作、施法动作、站立动作、以及死亡动作。

主角以及怪物模型的选用要求:(1)主角要具有多种动作,包括:站立时动作、行走动作、攻击动作、释放技能动作,以及死亡动作;(2)怪物的种类要有两种,包括人形和兽型,并且要具有行走动作、攻击动作以及死亡动作。

基于Unity的塔防游戏

基于Unity的塔防游戏

基于Unity的塔防游戏作者:赵紫儒来源:《丝路艺术》2017年第03期摘要:利用Unity游戏开发引擎来设计一款休闲策略塔防游戏《保卫萝卜》,游戏系统分为两大模块,游戏基础模块和游戏逻辑管理模块,两大模块细划分为资源管理模块、数据存储模块、页面UI管理模块、游戏逻辑模块和关卡模块。

其中游戏逻辑模块是整个游戏的核心模块,数据存储管理模块和关卡管理模块为游戏提供了灵活的扩展能力,可以通过 xml 文件对关卡进行配置,将游戏的逻辑与实现相分离。

运用算法实现怪物自动寻路,运用对象池技术实现子弹的优化,脚本动态加载地图读取关卡,按照游戏的开发思路,从相关知识介绍、游戏设计、游戏实现到游戏测试一步步展开工作。

关键词:Unity;塔防;算法;对象池1 引言随着互联网技术的迅速兴起和发展,人们生活质量在不断的提高,人们对生活品质也在不断增加。

当前计算机电脑的普及,玩电脑游戏已经成为人们娱乐的主要方式之一[4]。

选择一款独特的、吸引人的、画面精美的游戏已成为一种主流。

尽管目前市场上存在各种游戏,但塔防游戏市场仍然相当大。

因为它的特殊之处在于人们在游戏过程中沉浸其中,而且难度越大,挑战性越强,越刺激。

而且对于工作的人来说,也不可能花费大量时间用在游戏上,他们会在休闲时间,来享受这短暂的快乐,所以像这款保卫萝卜塔防游戏就刚好迎合了他们的需求。

2 工具及关键技术介绍2.1工具介绍Unity是近些年来十分热门的游戏专业开发引擎之一,包含各种开发工具,可发布多平台的一个全面整合的专业游戏引擎,它可以一边运行一边调试,在运行调试过程中可以让开发者挖掘到其中的乐趣,不断迸发想法,不断学习。

一个完整的Unity程序是由若干个场景组合而成的,每个场景都由许多游戏对象组成,每个游戏对象可以有若干个组件,脚本也是组件之一,通过脚本控制场景中的物体,跳转场景等等是主要的操作手段,可以说,脚本即是大脑。

Unity简单直观的设计界面,高度的兼容性,使得游戏开发者能高效的完成工作。

基于unity3D的塔防游戏开发

基于unity3D的塔防游戏开发

基于unity3D的塔防游戏开发作者:仲晓庆蔡朝晖来源:《科技创新与应用》2018年第29期摘要:塔防游戏作为一个在休闲游戏爱好人群中经久不衰的玩法类别,凭借多样的玩法与超高的游戏体验始终保有相当数量的忠实玩家。

文章根据游戏的开发思路,使用unity3D引擎开发了一款塔防游戏。

本游戏主要分为三个模块,一是系统设置,包括游戏的各种设置,二是防御塔的功能设计,包括对防御塔的操作以及防御塔的攻击,三是敌人的功能设计,包括敌人的各种行为设计。

结果表明敌人与防御塔的属性设置很合理,游戏体验良好。

关键词:unity3D;塔防;游戏开发中图分类号:TP391 文献标志码:A 文章编号:2095-2945(2018)29-0014-03Abstract: Due to its variety of playing methods and the super experience, the tower defense game, as an unduring playing class in the leisure game lover groups, has been always retaining a considerable number of loyal players. According to game concept, a tower defense game, which is based on C#, is designed and realized in this paper. This game system mainly consists of three modules. The first one is system settings, including the various settings of the game. The second one is the function design of the defense tower, including the operation and attack of the defense tower. The third part is the function design of the enemy, including the various behaviors designs of enemies. The result shows that the properties of enemies and towers are reasonable and the game experience is great.Keywords: unity3D; tower defence; game development引言近年来,迅速发展的手机游戏、网页游戏和PC游戏已经成为游戏行业主流。

UnityD游戏引擎实战开发入门到精通(坦克大战项目实战NGUI开发GameObject)

UnityD游戏引擎实战开发入门到精通(坦克大战项目实战NGUI开发GameObject)

本课程是怎么样地一门课程<全面介绍)1.1、课程地背景现如今游戏已经成为了人们生活中不可或缺地一部分.不经意间,你在公交上,在地铁里,在商场中,办公室里,都可以看到各式各样地人在用不同地途径玩着各种各样地游戏.可以说,游戏是一个前景非常美好地行业.有PC端地玩家,有网页端地玩家,也有移动端地玩家.他们可以通过不同地途径来娱乐自己喜欢地游戏,走到哪里,都可以看到这些已经渗入到人们地生活里了.那么从程序地角度,要实现这些不同平台地互通,我们要怎么实现呢?如何通过一次编码,全平台运行呢?Unity3D就是本着这样地需求而诞生地.b5E2RGbCAPUnity3D可以让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容地多平台地综合型游戏开发工具,是一个全面整合地专业游戏引擎.已经实现了跨平台.可以在移动端,pc端和网页端互通了.一次编码,发布不同平台就可以了.所以现在Unity3D也成为开发人员地首选编程语言了.其制作3D游戏,也就分分钟地问题.非常地方便.易懂易学.通过Unity简单地用户界面,玩家可以完成任何工作.这些为玩家节省了大量地时间.p1EanqFDPw 所以本课程将通过实例来讲解Unity3D地开发过程.由浅入深地,让学者快速地掌握Unity3D开发地要领及Unity3D地知识点.达到快速开发地目地.DXDiTa9E3d1.2、课程内容简介本课程由浅入深地介绍Unity3D地开发流程.从软件使用到API接口地使用,从成品到优化.介绍整个Unity3D地基本开发过程及开发中碰到地基础问题进行深入讲解.对代码重构及代码优化做出示例,让学员能逐步地了解Unity3D开发地注意点.讲解Unity3D软件界面地使用,Unity3D组件地介绍,使用C#编写Unity3D及Unity3D GUI<NGUI)地介绍和游戏简单AI地编写,让学员能够把握Unity3D开发地方向,成为一名合格地游戏开发人员.RTCrpUDGiT1.3、讲师介绍多年网游开发工作经验,现任国内某大型网游公司担任Unity3D核心工程师,精通C++、C#语言,对Unity3D引擎有着深刻地理解并熟练使用引擎地各个模块 ,多年来主要致力于网络小游戏地开发,大型网页游戏,Arpg网页游戏,SNS社交游戏,棋牌类游戏等,在游戏开发领域有丰富地工程实战经验.5PCzVD7HxA更多免费资料可加群106537671二、为什么需要这么套课程?2.1、企业需要什么?说明:以下企业需求职位均来自于51job2.2、课程学习目标(我们提供什么?>目标一. 可以让学员快速上手掌握如何使用Unity3D软件使用目标二. 可以让学员迅速了解Unity3D游戏开发流程目标三. 可以让学员迅速掌握Unity3D相关知识点目标四. 可以让学员熟练使用C#编写Unity3D开发目标五. 了解C#事件机制目标六. 使用NGUI进行界面开发目标七. 熟练使用Unity3D进行游戏发布2.3、课程特色特点一、讲师具有一线地实战经验与丰富地教案经验,课程即讲解案例实现思路、理论与原理又讲解实战技巧与注意事项,即照顾到基顾学员,又照顾到有一定实战经验想要提高自己地学员.jLBHrnAILg特点二、在每节开始之前先简单回顾上一节所讲地主要内容,并对本节所讲地内容先进行概述,讲解概念、技术要点,设计实现思路等内容,最后总结本次课程地要掌握地要点,讲师授课采用先理论,后实战地方式,由浅入深,符合人们接受知识地自然规律.xHAQX74J0X特点三、学习地过程中学员要理论和实践相结合,讲过地代码学员自行完成修改和调试,以巩固加深学习效果.2.4、课程亮点技术亮点一:Unity3D引擎开发零基础入门技术亮点二:认识GameObject技术亮点三:组件由浅入深地介绍技术亮点四:NGUI开发使用技术亮点五:地形系统技术亮点六:预置模块技术亮点七:游戏简单AI技术亮点八:游戏物体地组装介绍技术亮点九:游戏环境设置技术亮点十:游戏发布注意事项3.课程真心不错,我可以学吗?本课程适合于想从事Unity3D开发地人员.无需Unity3D基础,只要拥有编程基础即可.本课程由浅入深地介绍Unity3D地开发流程.从软件使用到API接口地使用,从成品到优化.介绍整个Unity3D地基本开发过程及开发中碰到地基础问题进行深入讲解.对代码重构及代码优化做出示例,让学员能逐步地了解Unity3D开发地注意点.LDAYtRyKfE讲解Unity3D软件界面地使用,Unity3D组件地介绍,使用C#编写Unity3D及Unity3D GUI<NGUI)地介绍和游戏简单AI地编写,让学员能够把握Unity3D开发地方向,成为一名合格地游戏开发人员.Zzz6ZB2Ltk4.我该怎么学,如何才能学好这门课程,给些建议.4.1、时间上地安排建议本课程共20讲,如果您时间上充分,建议以每天3-4讲地进度往前学习.如果您是上班族或您已经有一定地基础了,可以先把C#回顾下.dvzfvkwMI14.2、学习要求如果您没有基础,建议还是中规中矩地按照课程进度一点一点仔细观看学习,并一定要把看完地视频中地代码自己手敲一遍,以加深理解和记忆rqyn14ZNXI如果您有基础,可不必按步就搬进行,可以拿你感兴趣地部分去学习,但一定要注意实践,并学会举一反三4.3、讲师建议建议:1.最好看完视频之后,抛开视频,独立自己去把上课中地示例写一遍,看自己是否理解,如果不正确,可以回过头看再看下视频,如果反复,达到真正理解和熟练掌握地目地.EmxvxOtOco2.对于工程实战部分,一定要自己亲自动手做一遍,不要满足听完就OK了3. 建议一般听视频,一般拿个纸和笔,做一些记录和笔记,这是一种非常好地学习习惯.4. 一定不要过于依赖视频,要学会看API和使用百度,学会思考,学会举一反三5. 最后祝您学有所成5.学完这门课程后能做什么?学会该课程后,您可以结合您自己公司地业务逻辑做出内似以下地工程出来:本课程是属于某个特定地专业技术,掌握该技术后,你可以从事以下职位地相关工作Unity3D开发工程师.6.学员常见问题:常见问题一:学这个课程需要什么基础?讲师回答:拥有一定编程基础地,了解基本C#编程语法地人员常见问题二:这种技术一般可用在什么场合?讲师回答:Unity3D使用范围广泛.可以使用在室内漫游,游戏开发,应用软件开发全景视图等常见问题三:学完这项技术可以从事地工作岗位有哪些?讲师回答:由于3D技术不断地成熟和流行,越来越多地公司使用3D 技术开始做相关地应用和游戏.学完这个技术,我们可以从事一切和3D有关地软件游戏需求.如,室内漫游,全景预览,游戏开发等SixE2yXPq5个人收集整理资料,仅供交流学习,勿作商业用途。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[Unity3D]Unity3D游戏开发之塔防游戏项目讲解(上)通常意义上讲,塔防游戏是指一类在地图上建造炮台或者类似建筑物来阻止敌人进攻的策略类游戏。

从这个概念中,我们可以快速地抽离出来三个元素,即地图(场景)、敌人、炮台(防守单位)。

当我们抽离出来这样三个元素后,现在塔防游戏就变成了这样的一种描述,即敌人按照地图中设计的路径进攻,玩家利用防守单位进行防守的一类策略游戏。

经典的塔防游戏有哪些呢?比如我们最为熟悉的《植物大战僵尸》、《保卫萝卜》都是塔防类游戏的经典游戏。

如果我们将塔防游戏中的防守单位的范围扩大到玩家,那么像《英雄联盟》这样的游戏同样是可以称之为塔防游戏的,因为敌我阵营的最终目的都是要摧毁敌方的防御塔,只是敌我双方都从炮台或者怪物变成了有血有肉的人物,加之角色扮演(RPG)和即时战略(RTS)等元素的混合渗透,使得这样的游戏从单纯的塔防游戏变成了一款可玩度极高的游戏(天啊,我居然在夸这个游戏.....)。

好了,那么我们就来尝试着做出一个简单的塔防游戏吧,注意是简单的塔防游戏哦,既然塔防游戏的三个要素是地图、敌人和防守单位,那么我们就从这三个方面来着手设计这个游戏吧!在本篇文章中,我们将用到下面的知识:∙Unity2D中的Sprite动画∙Unity3D中的可视化辅助类Gizmos∙塔防游戏中敌人按路径寻路的实现∙Unity3D uGUI的初步探索∙简单的AI算法一、地图篇地图是一个塔防游戏中玩家最为关注的地方,因为地图和敌人将直接影响到玩家的策略。

如图是从《保卫萝卜》游戏中提取的一张游戏地图。

在这张地图中我们可以清楚看到怪物进攻的路径,怪物将沿着地图中的路径向我方防守单位发起攻击。

那么,在游戏中,我们该怎样确定怪物的攻击路径呢?首先我们可以对地图进行下分析,在地图中基本上基本上只有两种类型的区域,即可以放置防守单位的区域和不可放置防守单位的区域两种。

由此我们可以设计出下面的结构:[csharp] view plaincopying UnityEngine;ing System.Collections;3.4.[SerializeField]5.public class GridNode : MonoBehaviour6.{7.public enum NodeType8.{9.CanPlace,10.CantPlace11.}12.13.public NodeType GridNodeType=NodeType.CanPlace;14.}可以看出,我们在GridNode类中定义了一个称为NodeType的枚举类型,这个枚举类型有两个值,CanPlace表示可以放置防守单位,CantPlace表示不可以放置防守单位。

在GridNode类中只有一个NodeType类型的成员变量GridNodeType,该成员变量的默认值是CanPlace,即可以放置防守单位。

那么,现在问题来了,我们找到了一种可以用来描述地图中不同区域的方法,可是这些区域在哪里呢?所以我们需要一种方法来生成这些区域。

这里隆重向大家介绍Gizoms类,Gizmo是Unity中一个用于在场景视图可视化调试或辅助设置的工具类。

简单的说,当我们需要在编辑器环境中实现某种可视化调试的时候,我们就可以使用Gizmo类。

所以的Gizmo绘制都需要在OnDrawGizmos或OnDrawGizmosSelected函数里完成。

从这两个函数的名称我们就可以看出它们的区别,OnDrawGizmos在每一帧都调用,所有在Gizmos里渲染的Gizmo都将被渲染,而OnDrawGizmosSelected仅在脚本附加的物体被选中时渲染。

好了,在了解了Gizmos的基本概念和用法后,我们回到我们的游戏中。

我们刚刚提到,我们需要一种方法来生成区域以便于我们可以使用GridNode类来描述每个区域的属性,那么具体怎么做呢?其实思路就是在地图上画出网格,这样网格便可以将整个地图分割成不同的区域,然后我们就可以使用GridNode来描述每个区域的属性啦。

好了,下面我们来看具体的脚本:[csharp] view plaincopying UnityEngine;ing System.Collections;3.4.public class GridMap : MonoBehaviour {5.6.public static GridMap Instance=null;7.8.public int MapSizeX;9.public int MapSizeZ;10.11.[HideInInspector]12.public GameObject[] mNodes;13.[HideInInspector]14.public GameObject[] mPaths;15.16.void Awake()17.{18.Instance=this;19.mNodes=GameObject.FindGameObjectsWithTag("GridNode");20.mPaths=GameObject.FindGameObjectsWithTag("PathNode");21.}22.23.void DrawGrid()24.{25.Gizmos.color=Color.blue;26.for(int i=0;i<=MapSizeX;i++)27.{28.Gizmos.DrawLine(new Vector3(i,0,0),new Vector3(i,MapSizeZ,0));29.}30.for(int j=0;j<=MapSizeZ;j++)31.{32.Gizmos.DrawLine(new Vector3(0,j,0),new Vector3(MapSizeX,j,0));33.}34.}35.36.void DrawColor()37.{38.if(mNodes==null) return;39.foreach(GameObject go in mNodes)40.{41.Vector3 mPos=go.transform.position;42.if(go.GetComponent<GridNode>()!=null){43.if(go.GetComponent<GridNode>().GridNodeType==GridNode.NodeType.CanPlace){44.Gizmos.color=Color.green;45.}elseif(go.GetComponent<GridNode>().GridNodeType==GridNode.NodeType.CantPlace){46.Gizmos.color=Color.red;47.}48.Gizmos.DrawCube(mPos,new Vector3(1,1,1));49.}50.}51.}52.53.void DrawPath()54.{55.Gizmos.color=Color.white;56.if(mPaths==null) return;57.foreach(GameObject go in mPaths)58.{59.if(go.GetComponent<PathNode>()!=null){60.PathNode node=go.GetComponent<PathNode>();61.if(node.ThatNode!=null){62.Gizmos.DrawLine(node.transform.position,node.ThatNode.transform.position);63.}64.}65.}66.}67.68.void OnDrawGizmos()69.{70.DrawGrid();71.DrawColor();72.DrawPath();73.}74.75.76.}文章出处【狗刨学习网】在这段脚本中,我们首先定义了两个int类型的变量MapSizeX,MapSizeZ,这两个变量分别用来表示需要绘制网格的大小。

下面我们来重点关注OnDrawGizmos方法,在这个方法中我们定义了3个方法DrawGrid、DrawColor和DrawPath。

其中DrawGrid方法负责绘制地图网格,DrawColor方法负责绘制地图区域、DrawPath方法负责绘制敌人寻路路径。

我们首先来说DrawGrid,DrawGrid负责绘制地图网格,默认从原点开始绘制,要绘制网格只需要绘制交错的横线和竖线即可,这里我们使用的Gizmos类下的DrawLine方法我们首先在场景中创建一个MeshRoot的空物体,将GridMap脚本附加到该物体上,我们下面来看看绘制的效果:因为Gizmos为我们提供了可视化的调试功能,因此我们可以直接在编辑器窗口中看到实际的效果,这样我们就利用Unity绘制出了地图的网格。

为了让地图的左下角和场景原点能够完全匹配,这里写了一个简单的工具类AutoPlace来实现地图的位置计算和调整:[csharp] view plaincopying UnityEngine;ing System.Collections;3.4.public class AutoPlace : MonoBehaviour {5.6.//精灵渲染器7.private SpriteRenderer mRenderer;8.//精灵宽度9.private float mSpriteWidth;10.//精灵高度11.private float mSpriteHeight;12.13.14.void Start ()15.{16.mRenderer=GetComponent<SpriteRenderer>();17.//计算精灵的实际大小18.mSpriteWidth=mRenderer.sprite.bounds.size.x * transform.localScale.x;19.mSpriteHeight=mRenderer.sprite.bounds.size.y * transform.localScale.y;20.//自动调整精灵的位置21.transform.position=new Vector3(mSpriteWidth/2,mSpriteHeight/2,0);22.}23.}好了,下面我们来继续讲解地图中区域的生成。

什么是地图中的区域呢?在塔防游戏中玩家通常情况下都只能在可以放置防守单位的区域放置防守的单位,那么可以放置防守单位的这些地方就是我们接下来要来研究的区域。

相关文档
最新文档