塔防app功能模块设计块

Unity3D塔防开发流程 - 简书
Unity3D塔防开发流程
Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器、Visual Studio编译器开发建议:了解Unity3D灯光,音频,物理,粒子特效,动画,NGUI,UGUI模块参数了解Unity3D Network网络模块参数了解Unity3D原生GUI地形创建鼠标左键单机Hierarchy面板中的Create鼠标移动触摸3D Object鼠标左键单机Cube浏览Scene视图中的Cube对象鼠标左键单机Cube对象鼠标左键单机Cube对象的一条数轴并移动鼠标左键单机Inspector中的Transform组件右侧的设置图标鼠标移动触摸Resert鼠标左键单机Resert进行重置Cube对象的位置,旋转角度,大小缩放鼠标左键单机 Hierarchy面板中的Cube对象触发键盘Ctrl同时触发D键进行自动复制Cube对象鼠标左键单机Scene视图中的Cube对象中的一条数轴并移动继续移动并浏览Inspector视图中Transform组件中的x,y,z继续移动并设置Inspector视图中Transform组件中的轴x,y,z一个值停歇移动鼠标左键单机Cube对象触发键盘Ctrl同时触发D键进行自动复制对象鼠标左键单机Scene视图中的Cube对象中的一条数轴并移动继续移动并浏览Inspector视图中Transform组件中的x,y,z继续移动并设置Inspector视图中Transform组件中的x,y,z继续移动并保持x,y,z的值为n(推荐1.5开始,依次乘2)停歇移动并重复复制Cube直到Cube数量达到所需要塔防网格一列个数(推荐10个)鼠标左键单机Scene视图或Hierarchy视图中Cube对象同时触发键盘中的Ctrl键持续触发Ctrl键,松下鼠标左键持续触发Ctrl键,鼠标左键依次单机其它的Cube对象松下Ctrl键触发Ctrl键同时触发D键复制Cube对象松下键盘与鼠标鼠标左键单机Scene视图中Cube对象中的一条数轴同时进行移动一条数轴松下鼠标左键,浏览Inspector视图中的x,y,z调节Inspector视图中的x,y,z的值,(推荐1.5开始,依次乘2)鼠标左键单机Cube对象持续单机并触发键盘Ctrl键与松下鼠标左键,鼠标左键依次单机目前一列Cube松下鼠标左键,触发键盘Ctrl键与D键进行复制Cube对象复制Cube n列(推荐10列)检测每列/每行Cube在Inspector视图中Transform组件中的x,y,z的值检测每一轴是否成某倍数依次相增第1步地形构建完成,喝杯水休息1分钟地形设计鼠标左键单机Scene视图中的Cube持续单机鼠标,并触发键盘Ctrl键松下鼠标,持续触发Ctrl键进行选择Scene视图中的Cube对象鼠标右键单机Cube对象松下鼠标鼠标移动触摸Delete鼠标左键单机Delete删除当前选择的Cube对象松下鼠标左键鼠标左键单机Hierarchy视图中的一个Cube对象持续单机,并触发键盘Ctrl键与D键进行复制2次松下鼠标,鼠标左键单机新复制的2个对象松下鼠标,触发键盘F2键键盘输入字符为新复制2个对象的名称,不能为中文(推荐StartPoint,EndPoint)松下鼠标与键盘单机project视图中的Create鼠标移动触摸Material并单机创建Material将创建的Material材质拖拽到Cube触发键盘Ctrl键与键盘D键复制Material材质分别给材质重命名(重命名鼠标单机Hierarchy中的对象按下F2键)并设置Inspector面板中的材质颜色地形统一创建1个空物体选中所有的Cube拖拽到空物体收拉空物体道路创建创建两个Cube并重置Transform组件一个作为Start开始位置,用于存放妖怪生成的Cube一个作为End终点位置,用于销毁妖怪与判断游戏失败的Cube创建两个材质赋值给这两个对象计算之前被删除Cube的个数及行数,通过计算在被删除Cube的位置重新创建新的Cube并不留空格,只留与非道路的Cube处留0.5~1的空格道路设计道路设计部分需要使用一些数学运算,虽然都是些简单的运算,但是在设计过程中确实不能出一点差错,这一步一定要认真计算,认真留意.鼠标左键单机新创建的Cube,并将Cube向道路内侧稍微移动使其刚好与它在同一行的代码平齐道路统一(1)创建一个空物体,将所有的道路物体拖拽到空物体中并收拉核查地形重复检验上述建造地形是否足够精致,或是否满足自己需求,调整地形与道路妖怪生成移动管理妖怪创建鼠标左键单机Hierarchy面板中的Create鼠标移动触摸3DObject鼠标左键单机3DObject中的Sphere创建一个球体鼠标左键单机Hierarchy面板中的Sphere触发键盘F2键并重命名为Enemy(自由命名)在project面板中创建一个存放预设体的文件夹,将这个球体拖入预设体在project面板中创建一个存放材质的文件夹,并创建一个材质拖拽到球体上鼠标左键单机Hierarchy面板中的球体鼠标左键单机球体的Inspector面板中的完成Apply表示更新完成妖怪设计将妖怪的对象从project面板拖拽到Hierarchy面板中创建新的材质,并复制妖怪,将材质拖拽到妖怪上自定义修改调整妖怪的参数,设置成自己的需求妖怪路径点设置计算道路上的转弯处道路上每一道转换处等于一个转弯点,这个点即是路径点在每个路径点的中央创建一个空对象(建议使用Cube对象)之后完成后删除Mesh组件即可路径点完成后再建立一个空物体,将所有的路径点拖拽到空物体中并收拉创建一个脚本控制路径点脚本中创建一个路径点的数组,其中数组的长度为子对象的数量,通常用transform.GetChildCount()获取子对象的数量长度脚本绑定到路径点的管理对象上(路径点的父对象)在Awake方法中获取路径点父对象的子物体也就是获取路径点,但是因为脚本绑定在父对象上,所以要获取子对象.获取到子对象以后使用一个for循环遍历这个数组,遍历条件一般是i不大于数组的长度,也就是不大于子对象的数量,遍历一般是获取到数组的下标,使数组的下标等于子对象的的排序数量,例如positions[i]=transform.GetChild(i);路径点管理完成4.妖怪路径点脚本控制与妖怪移动原理(1)创建一个脚本用于管理妖怪所有功能及信息(2)获取路径点的数组,并给它赋一个值(3)创建一个新的方法,用于使妖怪移动到路径点,并在Update方法中调用(4)定义一个index,表示数组的下标,用于判断属于数组的哪一个下标(5)首先进行一个判断,如果index超出数组的长度,则返回.如果index没有超出,将会继续执行移动方法中的程序,妖怪移动到下一路径点一般==下一个路径点的位置减去当前所在位置的方向乘以一个速度变量和时间变量,例如(position[index].position-tranform.position).normalized*speed*Time.deltatime(6)上述路径点表示从开始位置移动到第一个下标路径点的位置,移动结束就会卡在第一个路径点的位置,但是后面还有路径点,所以不能让妖怪卡在一个方向,要转换方向,转换方向使用Distance,例如判断移动路径点的方向为Vector3.Distance(positions[index].position,tranform.position)&0.2f,当条件成立即index++5.核查妖怪参数与路径脚本开发塔防“四冲程”“进气冲程”:导入炮塔在计算机系统中查询到Unity塔防素材鼠标左键双击Unity塔防素材素材成功导入到Unity在Unity Project面板中创建一个文件夹将素材拖拽到文件夹中“压缩冲程”:重整炮塔查看存储炮塔的文件夹,查询炮塔及其它素材的参数拖拽一个炮塔到Scene视图上进行修改将炮塔放置在Cube上的适当位置鼠标左键单机炮塔调整炮塔的Inspector面板中的参数给炮塔添加材质给炮塔的子对象添加材质在Project面板中的Prefab预设体文件夹创建一个同炮塔名的文件夹将完成的炮塔移动到文件夹中另外创建其它的炮塔“作工冲程”:设计炮塔界面视觉设计:1)鼠标左键单机Hierarchy面板中的Create2)鼠标移动触摸UI一栏3)鼠标左键单机RawImage创建一个RawImage对象4)鼠标左键单机RawImage对象在Inspector面板中的Textrue旁边的圆圈图标更替一个材质5)鼠标左键单机Hierarchy面板中的Create6)鼠标移动触摸到UI一栏7)鼠标左键单机Text创建一个Text对象8)并设置Text对象在Inspector面板中的text属性9)创建一个空物体封装Text对象和RawImage对象并收拉10)复制三个,并赋给新复制的两个新的材质[其它的炮塔]界面选择设计:为复制的三个游戏对象添加一个Toggle组件并为它们添加一个image对象,并将image在inspector面板的材质替换成一个圆形材质每个对象的圆形材质分别拖入他们自己的toggle组件中的Graphic属性中界面单选设计:1)三个游戏对象的空的父物体拖拽到它们的Group属性中“排气冲程”:开发炮塔数据存储:创建一个脚本,用于存储炮塔的数据,表示炮塔数据存储类因为是存储炮塔的数据,仅需要有一个类即可,不需要继承于monobehavior接口,也不要使用unity自带的函数,所以接口继承和Start和Update两个函数可以删除创建一个GameObject类型的游戏对象表示炮塔实例化后的对象创建一个int类型的变量作为炮塔实例化所需要的价格创建一个GameObject类型的游戏对象表示炮塔升级后的对象创建一个int类型的变量作为炮塔升级所需要的价格此脚本由于是用于存储数据的类,所以不需要绑定给任何游戏对象,仅需存储在工程资源文件夹中即可监听炮塔:创建一个脚本,用于监听炮塔选择界面的点击选择事件引用UGUI的命名空间(using UnityEngzine.UI)创建三个公有化炮塔数据类的游戏对象表示三种炮塔创建三个方法,每一个方法表示选择一个炮塔创建一个私有化炮塔数据类的游戏对象表示选中的炮塔在每个方法中都加上一个bool类型的参数表示是否选择此炮塔在每个方法中都进行一个if语句判断,判断是否选择炮塔,判断选择为true在每个方法的每个条件中,给私有化用来选中炮塔的游戏对象赋一个值,该值为该炮塔所对应的游戏对象,完成后保存记录创建一个空物体并清除还原Transform组件将脚本绑定给这个空物体将这个空物体拖拽到Hierarchy面板中炮塔选择界面的Inspector面板中的toggle响应,并调用炮塔对应的方法点火校正:1)在每个方法中的每个条件中加入一个Debug.Log输出一下炮塔的游戏对象,确定是否相符,如不是,检查并修改六、塔防“发动机”1.检测鼠标触发地面网格(1)打开炮塔选择事件的脚本(监听炮塔的脚本)(2)在Start方法中判断一次鼠标左键点击事件if(Input.GetMouseButtonDown(0)){}(3)在这个条件中创建一条射线并赋值,这个值为主摄像机发射到屏幕的鼠标位置Ray ray = Camera.main.IsScreenPointToRay(Input.MousePosition);在这个条件中创建一个射线碰撞对象R在这个条件中创建一个bool类型的变量表示是否碰撞到某某对象,意思就是检测碰撞到了什么对象层,在Unity中每个游戏对象的Inspector面板上都有一个Layer,这个表示层,点击即可选择层,也可以创建一个层,之后选择这个层bool iscollider = Physics.Raycast(射线,这个一般是out hit,最大区域,一般是1000,LayerMask.GetMask(“获取层级的名称”));因为Unity自带一个检测UI的事件类EventSystem,所以需要在射线检测前加上一个条件,条件判断未检测到UI事件类,并且调用EventSystem的命名空间using UnityEngzine.EventSIf(EventSystem.current.IsPointerToRay()==false){将上列的射线检测剪切粘贴到此处}实例化创建炮塔创建一个脚本,用于放置炮塔到Cube上也就是Cube上的一个空物体在这个脚本中声明一个GameObject类的游戏对象在这个脚本中,创建一个实例化炮塔的方法,并带上一个GameObject类的对象参数实例化炮塔GameObject.Instaniate(炮塔的对象不是这个方法的参数,transform.position,transform.rotation) as GameO并将这条语句作为一个值给声明的游戏赋值返回选择炮塔和射线检测的脚本,在射线检测后声明一个炮塔类的对象,并获取到射线碰撞对象的实例化炮塔的组件也就是获取到实例化炮塔的类例如:MapCube mapcube=collider.gameObject.GetComponent();用一个if语句判断mapcube中的那个游戏对象,也就是实例化炮塔类中的那个游戏对象不等于空的情况,如果等于空,实例化创建炮塔,如果不等于空,打开升级出售UI界面例如If(TurretGo!=null){创建炮塔}
else{升级出售}创建炮塔只需要调用实例化炮塔类中的实例化炮塔的方法,并给方法传入参数,传如参数是之前声明的炮塔数据类的当前选择的炮塔例如:mapcube.Create(TurretToggle);但是创建炮塔后,炮塔的价格和炮塔的金币并未起到作用,因此下面便是炮塔的金币控制方法金币管理创建金币: 在Hierarchy面板中创建一个text对象,表示金币的对象,用于显示当前金币,继续在这个脚本中引用using UnityEngzine.UI这个命名空间,声明一个Text类型的金币对象,并在Start方法中获取到这个对象的Text组件例如:public T void Start(){ gold=gold.GetComponent(); }创建金币管理方法:在这个脚本中创建一个方法,用于存储与控制金币,等同于金币的入口生产点,创建一个变量,表示金币的初始值,可以设置一个初始值,在金币管理方法中添加一个int类型的参数表示更新金币的变量,不需要赋初始值,方法中表示金币的对象+“.text”等于”¥”+初始金币,初始金币+=更新金币例如:void Money(int changeMoney){gold.text=”¥”+ money+=changeM}设置炮塔金币购买条件:在射线检测后创建炮塔处为创建炮塔的执行语句添加一个if条件判断,判断如果金币大于或等于当前选择炮塔中的炮塔数据类中购买价格,才会创建炮塔,否则播放一个金币不足动画的提示例如:if(money&=selectedTurretObject.price){mapcube.Create(selectedTurretObject);}炮塔初始建造特效实例与销毁在实例化炮塔的那个类中,声明一个游戏对象,并在Unity3DInspector面板中给游戏对象赋值,该值为炮塔的建造的特效例如:public GameObject bulitTurretE在实例化炮塔的那个类里实例化炮塔的方法中实例化炮塔的执行语句下一行执行生成建造特效,并在一定时间内销毁例如:bulitTurretEffect = GameObject.Instaniate(声明的炮塔建造特效,transform.position,transform.rotation)as GameODestroy(bulitTurretEffect,多久销毁时间);建造特效:鼠标左键单机Hierarchy面板中的Create,创建一个Particle System对象,这个对象指的是Unity3D的粒子对象,Unity3D的特效一般从此处调节这个对象的Inspector面板的Particle System组件的参数,创建好特效,将特效拖拽到Project面板中的Prefab文件夹下炮塔射击触发检测空间设计将炮塔拖拽到Hierarchy面板进行设置开启炮塔的触发检测,鼠标左键单机勾选炮塔的Inspector面板中的Is Trigger调节触发区域大小,判断妖怪是否进入触发区域,如果进入执行一些事件创建一个脚本,在OnTriggerEnter方法中,添加一个Collider类型的参数将这个脚本绑定炮塔设置妖怪,炮塔等场景各个游戏对象的tag,不能相同在OnTriggerEnter方法中用一个if语句进行判断,如果tag为妖怪的tag,则表示妖怪进入了触发区域,作出一些响应.声明一个List集合,用于存储进入触发区域的妖怪,如果妖怪进入,则这个集合调用它的add方法,将碰撞的妖怪添加到集合中在OnTriggerExit方法中用一个if语句进行判断,如果tag为妖怪的tag,则表示妖怪离开了触发区域,如果妖怪离开了触发区域,则这个集合将会调用removeat方法将其移除该集合Debug.Log调试触发方法及内部的条件语句,确保无BUG5.炮塔射击对象与炮弹的实例化及相关处理将炮塔拖拽到Hierarchy面板中进行设置创建一个空物体并重置Transform组件调整空物体的位置正好处于炮塔炮口的位置将这个空物体拖拽到炮塔对象内,作为炮塔的子对象,并取名为炮塔炮口位置相关名称创建一个球体对象,重置Transform组件并添加刚体组件且刚体取消重力,碰撞体开启触发检测设置球体的大小,符合自己的规范即可,另外创建或导入另外两个炮塔的炮弹对象打开炮塔触发检测的脚本声明炮塔的炮弹对象并赋值例如:public GameObject bulletO实例化射击对象,创建一个方法,在这个方法中实例化炮弹对象例如:bulletObject = GameObject.Instaniate(炮弹对象,tranform.position,transform.rotation) as GameO炮弹目标点:在炮塔触发脚本中,创建一个Transform类型的变量作为目标点创建一个设置目标点的方法SetTarget在这个方法中添加一个Transform类型的参数变量例如:public T public void SetTarget(Transform target){ this.target= }炮弹碰撞处理脚本1)为炮弹添加Collider组件2)启用触发器勾选isTrigger3)创建一个炮弹触发处理的脚本并赋值给炮弹4)在炮弹触发处理脚本中的OnTriggerEnter方法中添加一个Collider类型的参数5)用一个if语句进行判断碰撞器Collider参数对象的碰撞对象的tag属性为妖怪的tag6)如果tag为妖怪标签,调用炮弹销毁的方法及其它妖怪处理以及炮弹销毁特效等处理七、塔防“底盘”1.妖怪血量管理(1)妖怪血量:1)创建一个UGUI Slider对象2)设置对象在妖怪正上方(2)妖怪血量处理:1)在妖怪数据脚本中添加一个血量属性2)并在脚本中添加一个Slider类型的对象并获取Slider组件和场景中的对象3)创建一个Slider血条跟随妖怪的方法4)在设置位置同步妖怪位置正上方一段距离5)创建一个Slider血量减少与增加管理的方法6)在这个方法参数列表中添加一个血量消耗值的参数并在方法中赋值给妖怪的血量属性7)在炮塔碰撞处理脚本中的触发检测后调用血量控制的方法2.炮塔升级处理/*炮塔升级:射线检测碰撞,如果鼠标左键碰撞到炮塔对象弹出炮塔升级面板*//*鼠标左键点击炮塔升级面板中的炮塔升级按钮销毁当前炮塔,生成升级的炮塔并增加血量控制的参数减少值*/炮塔出售处理/炮塔出售:射线检测碰撞,如果鼠标左键碰撞到炮塔对象弹出炮塔升级面板,点击炮塔升级面板中的炮塔出售按钮进行销毁当前选择的炮塔//**/拓展功能局域网:详情Unity Component 中 Network主要组件Network Manger:网络通信核心组件,必备,可设置网络服务端IP地址与端口号等Network HUD:网络通信测试组件,通常用于测试运行游戏阶段Network Identity:同步对象到局域网,其它客户端连接到服务端后同步生成的对象Network Transform:同步对象位置到局域网Network Animation:同步对象动画状态到局域网AI:详情Unity Windows中导航烘焙窗口,用于实现使某对象进行自动寻路等操作Light:详情 Unity Windows中灯光烘焙窗口,用于烘培灯光及场景为材质Json 与 Xml:详情 一个数据存储的文本标记语言,用于存储数据
前置阅读:PlayMaker:触发事件 Demo演示:PM_Cube 准备场景 新建场景,保存为PM_Cube。 创建一个Plane当地面,命名为Ground,重置位置(在Transform组件上点击右上角的“小齿轮”,选择Reset)。再创建一个Cube物体,重置位置,修...
PlayMaker是什么? PlayMaker是Unity3D的一款 可视化 的 有限元状态机(Finite-state machine,简称Fsm) 插件,用来进行交互设计。 有限状态机(英语:Finite-state machine,缩写:Fsm)又称有限状态自动机,简...
HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(DTD)。 标签:a 说明:标明超链接的起始或目的位置。 标签:acronym 说明:标明缩写词。 标签:address 说明:特定信息,如地址、签名、作者、此文...
1. 准备场景 下载并导入官方Space Shooter教程的范例素材包,我们仅使用其中的模型、材质、贴图、Prefab(里面有粒子特效)。 首先设置Player。将Models文件夹中的vehicle_playerShip放入场景,断开Prefab联接,改名为Player...
UILabel控件主要用于展示文字。 UILabel大多的使用环境是展示不需要和用户交互的文本即仅仅用来展示文字。当然了如果刚刚接触iOS不久,肯定会疑惑的UILable和UIButton的区别,或者说它们二者之间是否兼容是否多余。存在即有理当然不多余。如果对于UIButt...
UITextField的leftView接收的对象类型是UIView.首先UITextField的边框一开始我是下面这样设置的. searchTextField.borderStyle=UITextBorderStyleRoundedR 但是这一方法在设置leftV...
我还在努力 努力做自己 坚持不放弃 一直停留在原地 没有丝毫改变 是我落伍了 还是人都变了 终究是陌生了 我开始怀疑自己的眼睛 审视自己的心 屏住呼吸 开始怀疑人生 往昔的岁月像是做了一场梦 记忆的碎片 那些温柔与狰狞 最终都化成了幻影 两手空空仍是一无所得 或许也并不是什...
望着怀里的羊羊,我由衷的笑了,看他呆萌的神情,一切都值得了,也看开了。 回家发展有一年多了,从最初的冲动,到现在的冷静,虽然因为自己的冲动而导致的投资失利,欠债累累,很多时候都想扇自己几巴掌,恨自己的冲动和无知。在过去的一年里,有坚持,有失望的,有心酸。。 记得一个人看店时...
说起国漫电影,可能很多读者脑海里首先浮现出来的就是《大圣归来》和《大鱼海棠》,无可否认,这两部电影确实在不同角度上代表了国漫制作的巅峰技术,不过仍然有很多让人忽视的良心作品,今天小编要向大家推荐的就是《龙之谷》系列电影――《破晓骑兵》和《精灵王座》。 《破晓奇兵》 ...没有更多推荐了,
不良信息举报
举报内容:
动态配置模块实现模块拖拽效果
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!基于Cocos2D―X引擎的塔防游戏_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Cocos2D―X引擎的塔防游戏
龙源创新数字传媒(北京)股份有限公司|
总评分0.0|
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Android平台的塔防游戏设计—毕业设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 功能模块 的文章

 

随机推荐