Unity3D坦克⼤战项⽬总结
在⼤体学习了Unity3D和c#语⾔后,这⼤概算是第⼀个全程做下来的⼩项⽬。
本篇⽂章不含代码,仅从每个部分的实现思路和体会提出⼀点分享。算是⼀个个⼈的总结。unity3d入门
当然也包括我在实现的过程中碰到的⼀些bug和处理。
制作前准备
创建新项⽬,导⼊素材包⾃不必说。这部分主要讲⼀下素材的处理和动画的制作。
先说说图⽚处理
Unity中的图像资源⼀般是由许多⼩图构成的图集,所以需要先将这些图⽚进⾏划分。划分可以使⽤PS等图⽚处理软件,但是作为⼀个刚⼊门的游戏程序,怎么可能有机会有⼈帮你处理图⽚呢?(枯了)
但是Unity提供了能够将图⽚划分的Sprite Editor组件。(注意,使⽤该组件时,图⽚的Sprite Mode必须是Multiple)
Sprite Editor组件提供的Slice功能还是挺强⼤的,有三个模式(Auto模式,bycellsize模式,bycellcount
模式)。顾名思义,Auto模式能供⾃动识别图像并切割(但是貌似需要能够明显辨识出图⽚边界的图集?我⽬前正在做的⼀个宝可梦对战⼩项⽬在⼀些图⽚的⾃动切割模式下⽆法识别,但是⽤PS处理了⼀下(边界拉开)就能够成功切割了)。bysize模式则是你给定⼀个⼩图⽚的规模,按照这个规模切
割,bycount是你给出需要切割成⼏⾏⼏列(适合排列整齐地图集)。
再说说动画的⽣成
这个项⽬中动画的⽣成当然是由⼀系列图⽚组成的帧动画⽣成的(当然我⽬前也不太懂有其他的,太菜了)。选中要⽣成动画的⼀系列图⽚(由⼀系列从上到下的顺序图⽚⽣成的动画),拖到Hierarchy⾯板中,选择动画要保存的路径,即可⾃动⽣成,Animator及其控件,建议⽤两个⽂件夹分别管理动画及其控件,⽅便后续调整。(这⽅⾯由于接触的少,我能说的也挺少的)
游戏主体
游戏主体我想分⼏个系统来讲讲。
游戏对象
这个游戏的游戏对象其实是⾮常简单的,玩家操控的坦克,⽼家,敌⼈,⼦弹,地图组件。对于每个
游戏对象都要创建好预制体,并在碰撞效果触发等⽅⾯进⾏引⽤。(这⾥我⽬前有个⼩问题,如何能够批量的制作属性相同,但具体数值不同的⼤量同类型预制体,⽐如神奇宝贝对战中各种各样的精灵,各种各样的招式)下⾯讲讲各个游戏对象需要实现的功能及思路。
1. 玩家坦克和攻击系统
玩家坦克涉及到的活动主要有初始⽣成,发射⼦弹,被敌⼈摧毁等等。初始⽣成只需要在固定位置⽣成玩家预制体即可,被敌⼈摧毁也只需要有碰撞体和碰撞检测以及触发即可。这⾥主要讲讲战⽃系统。这⾥给我的影响还挺深的(有个bug我在这⾥调了2个⼩时,很简单的⼀个bug)。⼦弹的⽣成我⼀开始以为是直接把发射⼦弹这个能⼒给予玩家,没想到是在玩家⼝的位置直接⽣成。这同时也造成⼀个问题,直接⽣成的⼦弹是不区分敌我的,所以要给⼦弹附加上敌我这个属性,使其能够分辨出玩家和敌⼈。本游戏的胜利或失败条件很简单,只需要玩家⽣命为0或者⽼家被摧毁即失败,所以战⽃系统的触发条件⽤简单的switch语句即可完成。
2. 地图系统
地图系统也没我想象的那么⾼⼤上,在必要的位置先⽣成好墙壁,⽐如四周和⽼家周围,随后直接⽤random随机创建地图模块,本以为很突兀,但是貌似以前玩的就是这样的,所以效果展⽰出来发现也没那么奇怪。那么我试想⼀下那些地牢游戏随机⽣成的地图是否也可以这样实现?为了显⽰的规则些
是否可以按照模块随机⽣成?亦或是从⼀个⽐较⼤的地图库⾥直接随机选择?亦或是可以⽅便的编写⼀个地图编辑器,在⽅便地调⽤。
3. UI系统
这个游戏的UI系统其实出乎意料的简单,与此同时对于长进UI知识的帮助也⽐较⼩,我最近做的宝可梦对战的UI系统直接把我烦死了,UI系统(UGUI)可以去siki学院的官⽹上对应课程,免费的。
4. ⾳效系统
不想说这个了,⼏句代码的事,挺简单的。
对了对了,那个我搞了⼏个⼩时的bug其实就是,本该附加在玩家⾝上的爆炸特效,我在调试的时候留在了screen⾥⾯,导致每次开始运⾏游戏,直接触发爆炸效果,与此同时绑定的是玩家的游戏对象被销毁,简直了。。。
第⼀个项⽬整体做下来还是学到了很多东西,光学习理论确实不够,任重⽽道远啊。想要具体实现代码的同学可以看这⾥
谢谢⼤家,有问题可以⼀起探讨哦。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论