Tank!networking DEMO Unity3D项目

1.新建工程,导入资源,新建Scenes文件夹,保存该场景进该文件夹 
Tank!networking DEMO Unity3D项目

2.删除场景中的默认灯光 
Tank!networking DEMO Unity3D项目

2.1 再把Prefab里的LevelArt预设场景拖到Hierarchy中 
Tank!networking DEMO Unity3D项目

2.2选择window->lighting 打开光照窗口,取消勾选下面的Auto(自动渲染),取消勾选BakeGI,把RealtimeResoulution改为0.5,在把上面的AmbientSource改为color,颜色自定,选个和环境比较贴合的颜色,设置完毕后点右下角的Build开始烘焙,可能需要等待一会 
Tank!networking DEMO Unity3D项目

3.选择主摄像机,修改位置,角度,显示模式改为正交,把ClearFlags改为纯色,颜色自定,保存场景。 
Tank!networking DEMO Unity3D项目

4.从模型文件夹里找到Tank,拖到游戏场景中, 
Tank!networking DEMO Unity3D项目

5.给该物体指定图层为Playes 如果没有的话新建一个这个层,在改变图层对话框中选只对此物体生效按钮。 
Tank!networking DEMO Unity3D项目

6.给这个坦克加上刚体组件,并锁定Y轴的移动,X Z 轴的旋转 
Tank!networking DEMO Unity3D项目

6.1 再添加一个BoxCollider组件,并调整位置和大小 
Tank!networking DEMO Unity3D项目

差不多这么大就可以了 
Tank!networking DEMO Unity3D项目

6.2 添加一个AudioSource组件,指定音源,勾选LOOP选项 
Tank!networking DEMO Unity3D项目

7.把这个坦克拖到Prefab文件夹,作为一个预置体 
Tank!networking DEMO Unity3D项目

8.把预设文件夹里的DustTrail拖到Tank的下面作为它的子集,设置好它的位置,差不多在坦克的后轮位置,重命名为左边的烟雾,在复制一个,改变位置,重命名为右边烟雾 
Tank!networking DEMO Unity3D项目

9.点击Edit->ProjectSettings->Input 打开输入管理窗口,复制2个Horizontal 和2个Vertical输入接口,分别命名如下,分别管理2个玩家的输入,玩家1接受WSAD控制移动,玩家2接受上下左右控制移动 
Tank!networking DEMO Unity3D项目

10.选中Tank 添加AudioScource组件,再新建TankMovement脚本,记得把脚本放到Scripts文件夹下,打开编辑脚本 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

10.1 回到场景,记得指定音源 
Tank!networking DEMO Unity3D项目

然后保存,测试,Tank Number处指定坦克编号,填1就是1号坦克,由玩家1通过WSAD移动和旋转,填2则由玩家2通过上下左右光标键控制移动和旋转。

11.新建一个空物体,重命名为CameraRig,位置归0,旋转为40,60,0 
Tank!networking DEMO Unity3D项目

11.1 把主摄像机拖到上面这个CameraRig下面作为子物体,位置设为0,0,-65 
Tank!networking DEMO Unity3D项目

Tank!networking DEMO Unity3D项目

11.2在 Scripts-Camera下新建脚本CameraControl 
Tank!networking DEMO Unity3D项目

11.3 编辑脚本 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

11.4 回到场景,拖出2个坦克,指定不同的编号,并给上面的代码赋值 
Tank!networking DEMO Unity3D项目

11.5 运行,相机会跟随着2个坦克的中点位置移动,并当2个坦克的位置拉开以后相机还会自动调节焦距使2个坦克始终在屏幕中。

12.. 1 Create->UI->Slider 
Tank!networking DEMO Unity3D项目

12.2 打开输入管理器,修改Horizontal和Vertical 
Tank!networking DEMO Unity3D项目

12.3 选择 EventSystem,修改下面的InputMolule 横纵后面分别加上UI 
Tank!networking DEMO Unity3D项目

12.4 把这个Canvas拖到Tank下面作为它的子集,然后选择Canvas设置位置为0,0.1,0 宽度高度都设为3.5,X轴旋转90°,设置渲染模式为WorldSpace,然后再设置比例为1 
Tank!networking DEMO Unity3D项目

12.5 展开Canvas下的Slider,删除Handle Slider Area 
Tank!networking DEMO Unity3D项目

12.6 选中Slider物体(包括Slider)下的所有物体,设置锚点对齐为铺满(右下角的那个) 
Tank!networking DEMO Unity3D项目

12.7重命名这个slider为HealthSlider ,取消勾选Interactalbe(交互),设置Transiton为None,设置最大值为100,当前值也为100 
Tank!networking DEMO Unity3D项目

12.8 选择 Background 设置背景图片为HealthWheel(一个圆环),再在颜色里面设置它的Alpha值为80 
Tank!networking DEMO Unity3D项目

12.9 选择下面的Fill物体,同样设置图片为Wheel,Alpha值设为150,Type设为Filled,填充起点设为值 Left,取消勾选Clockwise(时钟方向) 
Tank!networking DEMO Unity3D项目

12.10 为HealtSlider新建一个脚本UIDirectionControl 
Tank!networking DEMO Unity3D项目

内容如下 
Tank!networking DEMO Unity3D项目

13.在预置文件夹里找到TankExplosion预置体,拖到场景中,再添加一个AudioSource组件,指定音源为TankExplosion,取消勾选PlayOnAwake,点击上面的Apply应用,然后删掉 
Tank!networking DEMO Unity3D项目

14.选中tank 添加一个TankHealth脚本,内容如下: 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

14.1 回到编辑器,指定好参数,然后别忘了点下Apply 
Tank!networking DEMO Unity3D项目

15.. 预置文件夹中找到Shell物体,拖到Hierarchy中,为其添加一个CapsuleCollider胶囊碰撞器,方向为Z轴,中心为0,0,0.2 大小根据子弹大小修改,这里为0.14,0.5,然后在添加一个Rigidbody刚体组件 
Tank!networking DEMO Unity3D项目

15.1 在把预设文件里的ShellExplosion 拖到Shell下面作为它的子物体,为其添加AudioSource组件,指定Clip为ShellExplosion ,取消勾选Play On Awake 选项,再添加一个Light组件 
Tank!networking DEMO Unity3D项目

15.2 为Shell指定ShellExplosion脚本,内容如下 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

15.3 回到编辑器指定好参数,保存测试 
Tank!networking DEMO Unity3D项目

16.. 选中Tank,右键新建一个空物体作为Tank的子物体,重命名为FireTransform,修改位置和旋转 
Tank!networking DEMO Unity3D项目

16.1 选中上面的Canvas 右键UI->Slider 
Tank!networking DEMO Unity3D项目 
16.2 重命名刚刚新建的Slider为AimSlider,展开它的子集,删除背景和把手,只剩下一个FillArea和Fill 
Tank!networking DEMO Unity3D项目

16.3 选择AimSlider 取消勾选Interactable,Transition改为None,方向改为从底到顶,最小值改为15,最大值改为30 
Tank!networking DEMO Unity3D项目

16.4 选中Fill,设置它的图片为Aim Arrow 
Tank!networking DEMO Unity3D项目

16.5 选中AimSlider和FillArea设置对齐方式为拉伸铺满,然后再选中AimSlider设置Transform为(1,-9,-1,1,3) 
Tank!networking DEMO Unity3D项目

16.5 设置好以后是这样的 
Tank!networking DEMO Unity3D项目

16.6 Edit->Project Setting 分别设置一下玩家1 2 的开火键 
Tank!networking DEMO Unity3D项目

16.7 为Tank添加脚本TankShooting 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

16.8 保存测试,玩家1可以按空格键发射炮弹,玩家2按Enter键发射炮弹,长按可以蓄力发射

17.. 新建2个空物体,分别重命名SpwanPonit1 2,改变位置,旋转和显示的颜色 
Tank!networking DEMO Unity3D项目

Tank!networking DEMO Unity3D项目

17.1 完成后是这样的 
Tank!networking DEMO Unity3D项目

17.1 新建一个Canvas,重命名为MessageCanvas,进入2D视图模式,右键新建一个Text作为它的子集,设置一些对齐方式,和文字内容,字体,文字大小,再为其添加一个Shadow组件,设置好颜色和位置 
Tank!networking DEMO Unity3D项目

17.2 选中CameraRig,在CameraControl 那里把Tragets 设为0 
Tank!networking DEMO Unity3D项目

17.3 打开CameraControl脚本,取消注释第8行,使m_targets不在Inspector面板中显示 
Tank!networking DEMO Unity3D项目

17.4 新建一个空物体,重命名为GameManager

17.5 新建脚本 TankManager 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

17.6 新建脚本 GameManager 额 有点长,有点绕,希望你能耐心看完……并理解…… 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目 
Tank!networking DEMO Unity3D项目

17.7 回到场景,把GameManager脚本给GameManager空物体,并赋值,其中的Tanks则由TankManager控制 
Tank!networking DEMO Unity3D项目

17.8 PS:GameManager 控制整个游戏的流程,TankManager控制坦克的行为。一开始由GameManager 在start中调用TankManager 初始化坦克,然后设置相机控制,相机的位置,焦距等,然后开始GameLoop 协程,GameLoop 中有回合开始、回合进行中、回合结束三中协程,说起来太绕,还是看图吧 
Tank!networking DEMO Unity3D项目

17.9 保存,运行,没问题。到这,游戏其实已经可以了,但是游戏的音频部分还是有些不足,像BGM,坦克的引擎声,炮弹声,爆炸声,蓄力声等……混在一起实在有些影响游戏体验,所以,下部分使用混音解决这些问题。

20.选中GameManager 添加一个AudioSource组件,指定音源为BGM 
Tank!networking DEMO Unity3D项目

20.1 新建一个文件夹AudioMixers 在其上面右键新建一个AudioMixer 
Tank!networking DEMO Unity3D项目

重命名 如下 
Tank!networking DEMO Unity3D项目

20.2 选择菜单 Window->AudioMixer 打开混音窗口 
Tank!networking DEMO Unity3D项目

20.3 选择Groups下面的Master 点击上面的右边的“+”依次新建三个 
Tank!networking DEMO Unity3D项目

20.4 选择Tank预制体,在音频的组件的Output选项中分别指定好混合器的组 
Tank!networking DEMO Unity3D项目

20.5 同样,选择Shell下面的子物体ShellExplosion 指定好组为SFX 
Tank!networking DEMO Unity3D项目

同样为GameManager指定Music组; 
Tank!networking DEMO Unity3D项目

为TankExplosion指定SFX 
Tank!networking DEMO Unity3D项目

20.6 选择MainMix 将Music和Dirving的值调小一些 
Tank!networking DEMO Unity3D项目

20.7 看图吧,我就不说话了 
Tank!networking DEMO Unity3D项目

20.8 在SFX下面添加Send 在右边的Receive中选择Music\DockVolume下面的Level设为0 
Tank!networking DEMO Unity3D项目

20.9 选 Music 在右边的DuckVolume中设置Threshold -46, Ratio 250, AttackTime 0 
Tank!networking DEMO Unity3D项目

20.10 保存,运行。这样BGM和特效声音都是分开管理的,这样体验会好很多。 
至此,本项目总算完成了,断断续续拖了近一个月,实在说不过去。得改! 
Tank!networking DEMO Unity3D项目 

对了,忘了传文件了。 
成品文件: 
http://pan.baidu.com/s/1eReFyMI

工程源文件: 

unity商店搜索 Tank!networking   DEMO

AR版github地址:

https://github.com/Unity-Technologies/experimental-ARInterface/tree/master

下一篇介绍AR版


原网址:

https://blog.****.net/six_sex/article/details/50784214