1.新建工程,导入资源,新建Scenes文件夹,保存该场景进该文件夹 

2.删除场景中的默认灯光 

2.1 再把Prefab里的LevelArt预设场景拖到Hierarchy中 

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

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

4.从模型文件夹里找到Tank,拖到游戏场景中, 

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

6.给这个坦克加上刚体组件,并锁定Y轴的移动,X Z 轴的旋转 

6.1 再添加一个BoxCollider组件,并调整位置和大小 

差不多这么大就可以了 

6.2 添加一个AudioSource组件,指定音源,勾选LOOP选项 

7.把这个坦克拖到Prefab文件夹,作为一个预置体 

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

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

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

10.1 回到场景,记得指定音源 

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

11.新建一个空物体,重命名为CameraRig,位置归0,旋转为40,60,0 

11.1 把主摄像机拖到上面这个CameraRig下面作为子物体,位置设为0,0,-65 

11.2在 Scripts-Camera下新建脚本CameraControl 

11.3 编辑脚本 
 
 
 

11.4 回到场景,拖出2个坦克,指定不同的编号,并给上面的代码赋值 

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

12.. 1 Create->UI->Slider 

12.2 打开输入管理器,修改Horizontal和Vertical 

12.3 选择 EventSystem,修改下面的InputMolule 横纵后面分别加上UI 

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

12.5 展开Canvas下的Slider,删除Handle Slider Area 

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

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

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

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

12.10 为HealtSlider新建一个脚本UIDirectionControl 

内容如下 

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

14.选中tank 添加一个TankHealth脚本,内容如下: 
 

14.1 回到编辑器,指定好参数,然后别忘了点下Apply 

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

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

15.2 为Shell指定ShellExplosion脚本,内容如下 
 
 

15.3 回到编辑器指定好参数,保存测试 

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

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

16.3 选择AimSlider 取消勾选Interactable,Transition改为None,方向改为从底到顶,最小值改为15,最大值改为30 

16.4 选中Fill,设置它的图片为Aim Arrow 

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

16.5 设置好以后是这样的 

16.6 Edit->Project Setting 分别设置一下玩家1 2 的开火键 

16.7 为Tank添加脚本TankShooting 
 
 

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

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

17.1 完成后是这样的 

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

17.2 选中CameraRig,在CameraControl 那里把Tragets 设为0 

17.3 打开CameraControl脚本,取消注释第8行,使m_targets不在Inspector面板中显示 

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

17.5 新建脚本 TankManager 
 

17.6 新建脚本 GameManager 额 有点长,有点绕,希望你能耐心看完……并理解…… 
 
 
 
 
 
 

17.7 回到场景,把GameManager脚本给GameManager空物体,并赋值,其中的Tanks则由TankManager控制 

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

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

20.选中GameManager 添加一个AudioSource组件,指定音源为BGM 

20.1 新建一个文件夹AudioMixers 在其上面右键新建一个AudioMixer 

重命名 如下 

20.2 选择菜单 Window->AudioMixer 打开混音窗口 

20.3 选择Groups下面的Master 点击上面的右边的“+”依次新建三个 

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

20.5 同样,选择Shell下面的子物体ShellExplosion 指定好组为SFX 

同样为GameManager指定Music组; 

为TankExplosion指定SFX 

20.6 选择MainMix 将Music和Dirving的值调小一些 

20.7 看图吧,我就不说话了 

20.8 在SFX下面添加Send 在右边的Receive中选择Music\DockVolume下面的Level设为0 

20.9 选 Music 在右边的DuckVolume中设置Threshold -46, Ratio 250, AttackTime 0 

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

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

工程源文件:

unity商店搜索 Tank!networking   DEMO

AR版github地址:

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

下一篇介绍AR版

原网址:

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

Tank!networking DEMO Unity3D项目相关推荐

  1. Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器

    最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...

  2. 在Unity3d项目中利用Udp进行局域网内通信

    在Unity3d项目中利用Udp进行局域网内通信 实现一个用于存储通信息的Quene using System.Collections; using System.Collections.Generi ...

  3. 深入浅出聊Unity3D项目优化:从Draw Calls到GC (难度2 推荐5)

    原文出处: 慕容小匹夫的博客(@慕容小匹夫) 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实, ...

  4. 【Unity3D】Unity 编辑器窗口布局 ( 创建 Unity3D 项目 | 添加物体 | 层级窗口 | 场景窗口 | 游戏窗口 | 属性窗口 | 项目窗口 | 控制台窗口 | 窗口位置修改 )

    文章目录 一.在 Unity Hub 中创建 Unity 2020 编辑器版本的 Unity3D 项目 二.Unity 编辑器窗口布局 1.添加物体 2.菜单栏和工具栏 3.Hierarchy 层级窗 ...

  5. Unity3D项目程序加密1——在Unity3D里使用自己的dl

    原文地址:http://liweizhaolili.blog.163.com/blog/static/1623074420144313825921/ 如果稍微关注过这方面知识的朋友,应该知道Unity ...

  6. Unity3D项目加密-精锐5加密锁解决方案

    Unity3D项目加密 Unity3D项目研发完成,发布前开发者需要对代码及资源进行加密,防止代码被反编译,防止资源被盗窃,造成不必要的损失.如果不做加密,可能很快就会出现一堆破解版游戏. Unity ...

  7. Unity3D项目四:牧师与魔鬼(动作分离版)

    Unity3D项目四:牧师与魔鬼(动作分离版) 基本介绍 动作管理是游戏的重要内容,全部都放在游戏对象里显得十分笨重,所以本次项目需要将动作从对象中提取出来写成单独的动作控制器.动作控制器来管理控制所 ...

  8. Unity3D项目三:牧师与魔鬼

    Unity3D项目三:牧师与魔鬼 基本介绍 列出游戏中提及的事物(Objects) 牧师,恶魔,船,河流,左侧陆地,右侧陆地 用表格列出玩家动作表(规则表),注意,动作越少越好 动作 条件 结果 点击 ...

  9. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)...

    最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,Shar ...

最新文章

  1. 0基础学python看什么书-编程语言学python必看这三本书,少走一半弯路
  2. Oracle 判断字符串是否能转成数字。
  3. matlab求解复杂复数方程,用matlab求解一个两重积分方程(未知数在积分下限,含复数积分)...
  4. 用c语言编程序输入一个正整数,编写一个程序,输入一个正整数n(假设n7),求1!+2!+3!+4!+……+n!...
  5. 前端学习(2545):找不到模块
  6. 关于本学期西南交通大学ACM-ICPC校集训队 训练计划(Beta 1.0)
  7. IOT设备的7大安全问题
  8. 在ECSHOP模板商品列表页 显示商品的评论等级和评论数量
  9. Windows Server2012 R2中安装SQL Server2008
  10. 媒体查询(黑马笔记)-移动端布局rem
  11. linux c语言读写块设备,Linux块设备IO子系统(一) _驱动模型
  12. 运营商大数据有哪些获客方式?
  13. C++ 关于日期时间(四)asctime/ctime/gmtime/time_t/tm
  14. PINTOS——Project 1: Threads
  15. #FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为“品红”(“洋红/Magenta”)是一种误称
  16. 对接医疗资源,创建高质量医疗数据库,这家公司能降低跨境医疗费用吗?
  17. 【B站最良心】2020年中9款热门游戏本最强横评!花8万块买下所有热门游戏本,华硕 天选 联想 拯救者 Y7000P R7000惠普 暗影精灵 6 Plus_哔哩哔哩 (゜-゜)つロ 干杯~-bili
  18. 网站推荐用的软文说明
  19. 100多个免费常用API接口分享,调用完全不限次数,以后总用得着!
  20. UE4 保持UV高级材质,基于WorldAlignedTexture材质函数修改而来(参考:知乎)

热门文章

  1. python写入、读取txt文本内容
  2. linux无线网卡连接不稳定怎么办,无线网络信号不稳定的四种原因及解决方法
  3. 找回手机功能(仅限华为)
  4. C++内存分配详解四:std::alloc行为剖析
  5. 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
  6. 【python】查看图像位深度,以及改变图像位深度的简单小结
  7. 你想要的汽车ReID数据集
  8. 如何通过后天培养提升孩子的能力?
  9. 数字化营销时代,新国货零售品牌如何书写增长故事?
  10. 开卷有益:黑莓知识库之BlackBerry Technical Solution Center