Unity3D项目之 Survival Shooter 记录
2016-01-29 12:12
369 查看
Survival Shooter Log
2016年1月19日15:53:55
1.导入资源
![](http://i.imgur.com/wmDsyax.png)
2.把预设文件的环境拖到场景中,
![](http://i.imgur.com/mVWsL7E.png)
3.位置归0
![](http://i.imgur.com/Cicsiwb.png)
4.保存场景
![](http://i.imgur.com/duqjve5.png)
5.删除默认灯光,把预设灯光拖到场景中,位置归0
![](http://i.imgur.com/MRCvK7s.png)
6.新建一个 Quad
![](http://i.imgur.com/7WoSCQe.png)
7.旋转90度,设置缩放100,100,1 重命名为floor 移除它的MeshRender 组件,并设在在Floor层
![](http://i.imgur.com/OICX4Wc.png)
8.保存场景
9.新建一个空物体,重命名为BGM
![](http://i.imgur.com/qMBWxEs.png)
10.添加一个 Audio Source 组件,并指定Audio Clip 为BackgroundMusic 勾选Loop选项,音量大小设为0.1
![](http://i.imgur.com/IqeFawo.png)
11.保存
12.找到Player预设体,拖到场景中
![](http://i.imgur.com/hb3Ig1Q.png)
13.位置归0,设置标签为Player
![](http://i.imgur.com/vVBXgM2.png)
14.新建一个文件夹名字叫Animation
![](http://i.imgur.com/scsothZ.png)
15.在这个文件夹下新建一个Animation Controller
![](http://i.imgur.com/wlSobKo.png)
16.名字就叫PlayerAC 拖到层级面板中Player物体上
17.双击打开这个AC
![](http://i.imgur.com/wsgyGsf.png)
18.把模型下的Player下的三个动画拖到Animator窗口里
![](http://i.imgur.com/vfjldaZ.png)
19.右键Idle 状态设为默认
![](http://i.imgur.com/0AlwD7Z.png)
20.新建一个Bool参数 名字叫IsWalking
![](http://i.imgur.com/TQvFIuY.png)
21.再建一个Trigger参数叫Did
![](http://i.imgur.com/MNWW87e.png)
22.右键Idle创建连接到Move,左键点击它们之间连接的白色箭头
![](http://i.imgur.com/iGKuzTL.png)
23.在右边的Conditions(过度条件)中添加一个参数
![](http://i.imgur.com/V62X7nh.png)
24.同理,创建一个返回的箭头,过度条件为IsWalking=false
![](http://i.imgur.com/wkEqNnM.png)
25.同理创建连接AnyState到Death的连接,过度条件为触发Die
![](http://i.imgur.com/OXxNKW4.png)
26.为Player 物体添加Rigidbody(刚体)组件,并设置Drag和Angular Drag 为Infinity(无限大)
Tips:输入的时候直接输inf后按回车就可以自动补全了。然后展开高级,锁定Y轴的位置,锁定X、Z轴的旋转
![](http://i.imgur.com/m7KSj6a.png)
27.再添加一个Capsule Collider(胶囊碰撞体),调整位置,使其居中
![](http://i.imgur.com/ZX4C83e.png)
![](http://i.imgur.com/MKsbHnI.png)
28.给Player添加一个AudioSource组件,音频片段选择PlayerHurt,取消勾选Play On Awake
![](http://i.imgur.com/pky0SJj.png)
29.把脚本文件夹下的PlayerMovement脚本拖到Player上,保存场景
![](http://i.imgur.com/RiXMIvI.png)
30.双击打开此脚本,开始编辑
![](http://i.imgur.com/QxRKxri.png)
![](http://i.imgur.com/EhepPr0.png)
31.保存,测试,发现有点问题,移动的时候并没有立即切换到移动动画,而是等Idle的动画播放完毕后才能切换,打开动画控制窗口,点击连接的箭头,过度条件上面取消勾选Has Exit Time,在保存,测试。发现没有问题了
![](http://i.imgur.com/Dqi2O8s.png)
2016年1月22日13:19:31
GO ON!
32 . 选中摄像机,调整位置,旋转等参数,效果如下:
![](http://i.imgur.com/2K4BVG8.png)
![](http://i.imgur.com/EjnUJJp.png)
33.给这个摄像机新建一个脚本CameraFollow 双击打开编辑
![](http://i.imgur.com/Cg00Fqf.png)
增加鼠标滚轮放大缩小的功能
![](http://i.imgur.com/27oNDTz.png)
34.在预设文件夹里把Zombunny 物体拖到场景中,并把HiteParticles拖到Zombunny上,再把Zombunny设置到Shootable层中
![](http://i.imgur.com/0SfFy21.png)
35.给Zombunny添加刚体,并锁定移动轴和旋转轴
![](http://i.imgur.com/BoUTHFH.png)
36.再添加胶囊碰撞体,并调整位置
![](http://i.imgur.com/gDlOzof.png)
![](http://i.imgur.com/7wwNbq5.png)
37.在添加球形碰撞体,勾上Trigger选项,主要用来检测攻击
![](http://i.imgur.com/WRbCuZv.png)
![](http://i.imgur.com/7mIrAap.png)
38.添加AudioSource组件
![](http://i.imgur.com/BvVeykZ.png)
39.添加导航组件,设置参数
![](http://i.imgur.com/IRt1A1z.png)
40.打开导航面板
![](http://i.imgur.com/g2oth4X.png)
41.设置一些参数后点击Bake
![](http://i.imgur.com/V8KvqTu.png)
42.为ZomBunny创建动画,和前面一样,看截图就行
![](http://i.imgur.com/YpynjO0.png)
![](http://i.imgur.com/KmaxpzA.png)
建2个Trigger参数
![](http://i.imgur.com/OJzWdsr.png)
设置Move为默认状态,设置过度条件为PlayerDead
![](http://i.imgur.com/8ezSpf3.png)
设置Any->Death 为Dead
![](http://i.imgur.com/NfLhIjt.png)
把这个动画控制器指定给Zombunny
![](http://i.imgur.com/UoA8TTS.png)
43.把脚本文件夹里的EnemyMovement脚本拖给Zombunny
![](http://i.imgur.com/sY9Tvsi.png)
保存,运行测试。
2016年1月27日10:35:11
丢了好几天,今天继续
44.点击Scene窗口上的2D 按钮,切换到2D视图
![](http://i.imgur.com/5wlOlWj.png)
45 . 再创建一个Canvas
![](http://i.imgur.com/8hhYXQv.png)
46.重命名Canvas为HUDCanvas 并添加一个 CanvasGroup 组件,并取消勾选下面两个选项
![](http://i.imgur.com/oUAo0Ij.png)
47.在这个HUDCanvas上右键新建一个空物体,在重命名为HealthUI
![](http://i.imgur.com/zHDgWUJ.png)
48.设置对齐方式为左下角,并设置宽度高度75 60
![](http://i.imgur.com/RlEaYHH.png)
49.再HealthUI下建一个UI->Image子物体,重命名为Heart
![](http://i.imgur.com/nctywvi.png)
50.修改位置为0,0,0 大小为 30 30,下面的Source Image 指定一个心形的图片
![](http://i.imgur.com/VKwIXtw.png)
51.同样,再新建一个子物体 Slider,重命名为HealthSlider
![](http://i.imgur.com/PJxgj6y.png)
52.修改一下位置
![](http://i.imgur.com/s4JQUCs.png)
53.删除下面的手柄组件
![](http://i.imgur.com/5OEU8EU.png)
54.Transition模式改为NONE 最大值改为100
![](http://i.imgur.com/xXjuViM.png)
55.把滑块的背景色的透明度改小点,这样就能半透明显示
![](http://i.imgur.com/wei9H24.png)
56.完成后效果如下
![](http://i.imgur.com/PhWE2pl.png)
57.在HUDCanvas下面新建一个Image子物体,重命名为DamageImage
![](http://i.imgur.com/z7JN2jq.png)
58.设置它的对齐方式为铺满屏幕,并修改颜色的透明度为0
![](http://i.imgur.com/OEKUrzf.png)
59.保存场景,保存工程。
60.把PlayerHealth脚本拖到Player上
![](http://i.imgur.com/k8Mqoak.png)
61.脚本内容如下
![](http://i.imgur.com/Su6Yf9e.png)
![](http://i.imgur.com/EtnuCeP.png)
![](http://i.imgur.com/yqdnmvy.png)
62.回到场景,指定好各个物体组件
![](http://i.imgur.com/T9HK5CY.png)
63.再把EnemyAttack 脚本拖给Zombunny,脚本如下:
![](http://i.imgur.com/wY557np.png)
![](http://i.imgur.com/JzRyyVP.png)
64.再把EnemyHealth脚本拖到Zombuuny上
![](http://i.imgur.com/ItLAUoF.png)
脚本
![](http://i.imgur.com/dd8pK3z.png)
![](http://i.imgur.com/7QXhx91.png)
65.重新打开EnemyAttack脚本,把原来注释的地方取消注释
![](http://i.imgur.com/0yWqM4O.png)
![](http://i.imgur.com/sBisroP.png)
![](http://i.imgur.com/iu5D5x9.png)
然后保存。
66.打开预设文件夹里的Gunparticles 复制组件
![](http://i.imgur.com/JlPdXSW.png)
67.展开Player物体,找到下面的GunBarrelEnd物体,粘贴上面复制的粒子组件
![](http://i.imgur.com/OWMIDlo.png)
68.继续选中这个GunBarrelEnd物体,添加一个LineRenderer组件,并为其指定材质。
![](http://i.imgur.com/HRA7I3h.png)
69.并展开设置起始宽度和结束宽度都是0.05
![](http://i.imgur.com/VZ6yJ5N.png)
然后暂时禁用掉此(LineRenderer)组件
![](http://i.imgur.com/eav3pZQ.png)
70.同样,添加一个Light组件,设置颜色为淡黄色,然后再暂时禁用掉
![](http://i.imgur.com/GMSikD8.png)
71.再添加一个AudioSource组件,指定音源,取消勾选一开始就播放
![](http://i.imgur.com/sCBbLvG.png)
72.打开脚本文件夹,把PlayerShooting脚本拖到GunBarrelEnd上
![](http://i.imgur.com/lNDdYGm.png)
脚本内容
![](http://i.imgur.com/Mi1SGB1.png)
![](http://i.imgur.com/q5zK8Q1.png)
73.重新打开EnemyMovement脚本,把所有的注释符号都删掉
![](http://i.imgur.com/qE61Wpb.png)
74.重新打开PlayerHealth脚本,移除所有的注释代码符号
![](http://i.imgur.com/NONS6g6.png)
![](http://i.imgur.com/33OcbFy.png)
![](http://i.imgur.com/7KiSM41.png)
2016年1月27日21:37:53 GOOOOO ON..
75.保存,测试。可以运行,但是有个问题,游戏一开始,前面一直射击的话 会播放 粒子烟雾动画和枪口火光粒子烟雾动画 如果停火或者射偏的话 然后再次射击 就不会播放动画了,找了很多资料,也问了些人。没搞好,正准备先搁一边的时候,改了一下,加了一句代码竟然解决了。可能是版本问题。下面就是解决的方法。
![](http://i.imgur.com/9Dl1NLi.png)
就是在play前调用一次Simulate()方法,以后再研究一下这个方法是干嘛的吧。
保存,运行,没问题了。
76.选中HUDCanvas,右键UI->Text 新建一个Text子物体,重命名为ScoreText
![](http://i.imgur.com/tEPxR7D.png)
77.选中这个Text 设置锚点对齐方式为“中上”,位置,大小,都要设置一下。在然后是显示的文字“Score:0”字体选择一个自带的Luck字体,字体大小设为50,设置水平垂直居中对齐,设置字体颜色为白色,具体可参照如下
![](http://i.imgur.com/HL49gO3.png)
78.添加一个Shadow组件,参数设为 2 ,-2
![](http://i.imgur.com/Ylsrk1z.png)
整体效果如下
![](http://i.imgur.com/soelljk.png)
79.把ScoreManager脚本拖给ScoreText物体上
![](http://i.imgur.com/lBCeSio.png)
代码
![](http://i.imgur.com/cSnJgOE.png)
80.重新打开EnemyHealth脚本,在最下面,取消注释增加分数的代码
![](http://i.imgur.com/VCgJaCm.png)
值得注意的是这里的StartSinking方法是在该角色的死亡动画播放时触发的一个事件,该事件就调用了这个方法
![](http://i.imgur.com/gzTuttC.png)
81 . 在预置文件夹里再拖一个敌人Zombear到场景中,并指定动画控制机为EnemyAC,它的行为和动画都和Zombunny类似
![](http://i.imgur.com/FghYC8k.png)
82.在Animation文件夹上右键新建一个Animator Override Controller,重命名为hellephantAOC
![](http://i.imgur.com/LZzdchq.png)
83.选中这个控制器,在右边制定Controller为EnemyAC,并把要覆盖的动画片段相应的拖上去覆盖掉
![](http://i.imgur.com/EizPt9J.png)
84.别忘了指定该游戏物体的动画控制器
![](http://i.imgur.com/I0nh5DM.png)
保存,测试,没有问题
记:无意间发现ZomBear和Hellephant两种敌人角色下面还带着一个 DeathParticles
![](http://i.imgur.com/zAbEcyD.png)
目测应该是死亡时播放的粒子动画,所以就加了些代码时死亡是这个粒子动画能播放
首先是声明变量
然后是获取组件
然后在Dead方法中播放粒子动画
![](http://i.imgur.com/uvKUySe.png)
这样就可以了。
2016年1月27日23:32:23 今天到这
2016年1月28日10:22:39 GO OOOON
85.新建一个空物体,重命名为EnemyManager,在把Scripts文件夹里的EnemyManager脚本拖到此物体上
![](http://i.imgur.com/GBztYho.png)
代码
![](http://i.imgur.com/xO1nwhk.png)
86.新建三个空物体,在Tag地方指定上不同的颜色,放在不同的位置,命好名
![](http://i.imgur.com/wtvoWUG.png)
87.回到EnemyManager物体,给它指定3个EnemyManager脚本,并指定好PlayerHealth,和不同的Enemy物体,和不同的出生点
![](http://i.imgur.com/AGC2qVb.png)
88.在HUDCanvas上右键 新建一个子物体Image重命名为ScreenFader,设置为铺满屏幕,颜色改成个淡蓝色
![](http://i.imgur.com/kXhNJgS.png)
89.再右键UI->Text,重命名为GameOverText,设置为居中,设置宽度300高度50,文字内容为GameOver! 字体用分数的那个Luck字体,大小为50.段落对齐为水平垂直居中对齐,再加一个Shadow组件
![](http://i.imgur.com/r6yAB9v.png)
90.确定HUDCanvas中各个物体的顺序是下面这样的,因为排列的顺序不一样,显示的内容也不一样
![](http://i.imgur.com/iuVbZ2P.png)
91.分别把ScroeText和ScreenFader的Alpha值设为0,使其完全透明
![](http://i.imgur.com/Tg8oLiP.png)
92.选择HUDCanvas,点击菜单Window->Animation,为其创建一个动画
![](http://i.imgur.com/XnRVNnN.png)
点击创建,保存到Animation文件夹
![](http://i.imgur.com/1AZtMZv.png)
93 . 把GameOverText->Text->Color添加曲线动画
![](http://i.imgur.com/ubWzYwk.png)
94 . 分别把下面需要添加动画的元素都添加进来
![](http://i.imgur.com/8qyADnI.png)
95 . 给他们分别添加上关键帧,先把它们的结束帧都拖到 30帧的位置,然后把时间线拉到第0帧,选择GameOverText:Scale的缩放,在第0帧设为0,再把时间线拉倒第20帧,把缩放设为1.2,再把时间拉倒30帧,把缩放设为1,颜色的Alpha值都设为1(显示),把得分文字的缩放设为0.8 ,然后选择所有的关键帧,把它们移动到1:30的位置,再关闭自动记录关键帧的按钮
![](http://i.imgur.com/AQM27JR.png)
96 . 选择刚才的GameOverClip 取消勾选Loop 循环
![](http://i.imgur.com/2qqj2Qo.png)
97.打开HUDCanvas下的HUDCanvas动画状态控制器
![](http://i.imgur.com/PDR9X6M.png)
新建一个空的状态,使其和GameOverClip连接上,设置过度条件为Trigger 名字为GameOver
![](http://i.imgur.com/l4BDz0s.png)
98.把脚本文件夹中的GameOverManager脚本指定给HUDCanvas,并打开脚本
![](http://i.imgur.com/G4kD8n1.png)
内容如下
![](http://i.imgur.com/VizlU7w.png)
记得指定脚本
![](http://i.imgur.com/77dVQj9.png)
这样游戏结束了以后就会播放动画,然后会重新开始游戏。
到此,就已经完成了!但是我又继续优化了一下,我不想让玩家死亡后游戏自动重新开始,而是按”R”键,游戏才重新开始,按ESC键暂停游戏,再次按ESC键继续游戏,于是打开GameOverManager脚本编辑,添加如下代码
![](http://i.imgur.com/EGhVwjd.png)
99.保存,测试,OK!至此,这个项目就算完结了吧!
100.后续还可以加入很多功能,比如怪死亡以后会掉落物品,这些物品有的可以补充生命值,有的可以增强玩家的火力,或者玩家可以跳跃,这样怪就抓不到玩家了,还有一些BUG需要修复,比如敌人会源源不断的生成,这样会不断的消耗系统资源,可以设定在敌人出现以后多长时间如果没死的话就自动销毁。等等还有很多很多……
下面是链接
或者网址http://pan.baidu.com/s/1i4k1elv
Done
. 2016年1月28日14:26:20
2016年1月19日15:53:55
1.导入资源
![](http://i.imgur.com/wmDsyax.png)
2.把预设文件的环境拖到场景中,
![](http://i.imgur.com/mVWsL7E.png)
3.位置归0
![](http://i.imgur.com/Cicsiwb.png)
4.保存场景
![](http://i.imgur.com/duqjve5.png)
5.删除默认灯光,把预设灯光拖到场景中,位置归0
![](http://i.imgur.com/MRCvK7s.png)
6.新建一个 Quad
![](http://i.imgur.com/7WoSCQe.png)
7.旋转90度,设置缩放100,100,1 重命名为floor 移除它的MeshRender 组件,并设在在Floor层
![](http://i.imgur.com/OICX4Wc.png)
8.保存场景
9.新建一个空物体,重命名为BGM
![](http://i.imgur.com/qMBWxEs.png)
10.添加一个 Audio Source 组件,并指定Audio Clip 为BackgroundMusic 勾选Loop选项,音量大小设为0.1
![](http://i.imgur.com/IqeFawo.png)
11.保存
12.找到Player预设体,拖到场景中
![](http://i.imgur.com/hb3Ig1Q.png)
13.位置归0,设置标签为Player
![](http://i.imgur.com/vVBXgM2.png)
14.新建一个文件夹名字叫Animation
![](http://i.imgur.com/scsothZ.png)
15.在这个文件夹下新建一个Animation Controller
![](http://i.imgur.com/wlSobKo.png)
16.名字就叫PlayerAC 拖到层级面板中Player物体上
17.双击打开这个AC
![](http://i.imgur.com/wsgyGsf.png)
18.把模型下的Player下的三个动画拖到Animator窗口里
![](http://i.imgur.com/vfjldaZ.png)
19.右键Idle 状态设为默认
![](http://i.imgur.com/0AlwD7Z.png)
20.新建一个Bool参数 名字叫IsWalking
![](http://i.imgur.com/TQvFIuY.png)
21.再建一个Trigger参数叫Did
![](http://i.imgur.com/MNWW87e.png)
22.右键Idle创建连接到Move,左键点击它们之间连接的白色箭头
![](http://i.imgur.com/iGKuzTL.png)
23.在右边的Conditions(过度条件)中添加一个参数
![](http://i.imgur.com/V62X7nh.png)
24.同理,创建一个返回的箭头,过度条件为IsWalking=false
![](http://i.imgur.com/wkEqNnM.png)
25.同理创建连接AnyState到Death的连接,过度条件为触发Die
![](http://i.imgur.com/OXxNKW4.png)
26.为Player 物体添加Rigidbody(刚体)组件,并设置Drag和Angular Drag 为Infinity(无限大)
Tips:输入的时候直接输inf后按回车就可以自动补全了。然后展开高级,锁定Y轴的位置,锁定X、Z轴的旋转
![](http://i.imgur.com/m7KSj6a.png)
27.再添加一个Capsule Collider(胶囊碰撞体),调整位置,使其居中
![](http://i.imgur.com/ZX4C83e.png)
![](http://i.imgur.com/MKsbHnI.png)
28.给Player添加一个AudioSource组件,音频片段选择PlayerHurt,取消勾选Play On Awake
![](http://i.imgur.com/pky0SJj.png)
29.把脚本文件夹下的PlayerMovement脚本拖到Player上,保存场景
![](http://i.imgur.com/RiXMIvI.png)
30.双击打开此脚本,开始编辑
![](http://i.imgur.com/QxRKxri.png)
![](http://i.imgur.com/EhepPr0.png)
31.保存,测试,发现有点问题,移动的时候并没有立即切换到移动动画,而是等Idle的动画播放完毕后才能切换,打开动画控制窗口,点击连接的箭头,过度条件上面取消勾选Has Exit Time,在保存,测试。发现没有问题了
![](http://i.imgur.com/Dqi2O8s.png)
2016年1月22日13:19:31
GO ON!
32 . 选中摄像机,调整位置,旋转等参数,效果如下:
![](http://i.imgur.com/2K4BVG8.png)
![](http://i.imgur.com/EjnUJJp.png)
33.给这个摄像机新建一个脚本CameraFollow 双击打开编辑
![](http://i.imgur.com/Cg00Fqf.png)
增加鼠标滚轮放大缩小的功能
![](http://i.imgur.com/27oNDTz.png)
34.在预设文件夹里把Zombunny 物体拖到场景中,并把HiteParticles拖到Zombunny上,再把Zombunny设置到Shootable层中
![](http://i.imgur.com/0SfFy21.png)
35.给Zombunny添加刚体,并锁定移动轴和旋转轴
![](http://i.imgur.com/BoUTHFH.png)
36.再添加胶囊碰撞体,并调整位置
![](http://i.imgur.com/gDlOzof.png)
![](http://i.imgur.com/7wwNbq5.png)
37.在添加球形碰撞体,勾上Trigger选项,主要用来检测攻击
![](http://i.imgur.com/WRbCuZv.png)
![](http://i.imgur.com/7mIrAap.png)
38.添加AudioSource组件
![](http://i.imgur.com/BvVeykZ.png)
39.添加导航组件,设置参数
![](http://i.imgur.com/IRt1A1z.png)
40.打开导航面板
![](http://i.imgur.com/g2oth4X.png)
41.设置一些参数后点击Bake
![](http://i.imgur.com/V8KvqTu.png)
42.为ZomBunny创建动画,和前面一样,看截图就行
![](http://i.imgur.com/YpynjO0.png)
![](http://i.imgur.com/KmaxpzA.png)
建2个Trigger参数
![](http://i.imgur.com/OJzWdsr.png)
设置Move为默认状态,设置过度条件为PlayerDead
![](http://i.imgur.com/8ezSpf3.png)
设置Any->Death 为Dead
![](http://i.imgur.com/NfLhIjt.png)
把这个动画控制器指定给Zombunny
![](http://i.imgur.com/UoA8TTS.png)
43.把脚本文件夹里的EnemyMovement脚本拖给Zombunny
![](http://i.imgur.com/sY9Tvsi.png)
保存,运行测试。
2016年1月27日10:35:11
丢了好几天,今天继续
44.点击Scene窗口上的2D 按钮,切换到2D视图
![](http://i.imgur.com/5wlOlWj.png)
45 . 再创建一个Canvas
![](http://i.imgur.com/8hhYXQv.png)
46.重命名Canvas为HUDCanvas 并添加一个 CanvasGroup 组件,并取消勾选下面两个选项
![](http://i.imgur.com/oUAo0Ij.png)
47.在这个HUDCanvas上右键新建一个空物体,在重命名为HealthUI
![](http://i.imgur.com/zHDgWUJ.png)
48.设置对齐方式为左下角,并设置宽度高度75 60
![](http://i.imgur.com/RlEaYHH.png)
49.再HealthUI下建一个UI->Image子物体,重命名为Heart
![](http://i.imgur.com/nctywvi.png)
50.修改位置为0,0,0 大小为 30 30,下面的Source Image 指定一个心形的图片
![](http://i.imgur.com/VKwIXtw.png)
51.同样,再新建一个子物体 Slider,重命名为HealthSlider
![](http://i.imgur.com/PJxgj6y.png)
52.修改一下位置
![](http://i.imgur.com/s4JQUCs.png)
53.删除下面的手柄组件
![](http://i.imgur.com/5OEU8EU.png)
54.Transition模式改为NONE 最大值改为100
![](http://i.imgur.com/xXjuViM.png)
55.把滑块的背景色的透明度改小点,这样就能半透明显示
![](http://i.imgur.com/wei9H24.png)
56.完成后效果如下
![](http://i.imgur.com/PhWE2pl.png)
57.在HUDCanvas下面新建一个Image子物体,重命名为DamageImage
![](http://i.imgur.com/z7JN2jq.png)
58.设置它的对齐方式为铺满屏幕,并修改颜色的透明度为0
![](http://i.imgur.com/OEKUrzf.png)
59.保存场景,保存工程。
60.把PlayerHealth脚本拖到Player上
![](http://i.imgur.com/k8Mqoak.png)
61.脚本内容如下
![](http://i.imgur.com/Su6Yf9e.png)
![](http://i.imgur.com/EtnuCeP.png)
![](http://i.imgur.com/yqdnmvy.png)
62.回到场景,指定好各个物体组件
![](http://i.imgur.com/T9HK5CY.png)
63.再把EnemyAttack 脚本拖给Zombunny,脚本如下:
![](http://i.imgur.com/wY557np.png)
![](http://i.imgur.com/JzRyyVP.png)
64.再把EnemyHealth脚本拖到Zombuuny上
![](http://i.imgur.com/ItLAUoF.png)
脚本
![](http://i.imgur.com/dd8pK3z.png)
![](http://i.imgur.com/7QXhx91.png)
65.重新打开EnemyAttack脚本,把原来注释的地方取消注释
![](http://i.imgur.com/0yWqM4O.png)
![](http://i.imgur.com/sBisroP.png)
![](http://i.imgur.com/iu5D5x9.png)
然后保存。
66.打开预设文件夹里的Gunparticles 复制组件
![](http://i.imgur.com/JlPdXSW.png)
67.展开Player物体,找到下面的GunBarrelEnd物体,粘贴上面复制的粒子组件
![](http://i.imgur.com/OWMIDlo.png)
68.继续选中这个GunBarrelEnd物体,添加一个LineRenderer组件,并为其指定材质。
![](http://i.imgur.com/HRA7I3h.png)
69.并展开设置起始宽度和结束宽度都是0.05
![](http://i.imgur.com/VZ6yJ5N.png)
然后暂时禁用掉此(LineRenderer)组件
![](http://i.imgur.com/eav3pZQ.png)
70.同样,添加一个Light组件,设置颜色为淡黄色,然后再暂时禁用掉
![](http://i.imgur.com/GMSikD8.png)
71.再添加一个AudioSource组件,指定音源,取消勾选一开始就播放
![](http://i.imgur.com/sCBbLvG.png)
72.打开脚本文件夹,把PlayerShooting脚本拖到GunBarrelEnd上
![](http://i.imgur.com/lNDdYGm.png)
脚本内容
![](http://i.imgur.com/Mi1SGB1.png)
![](http://i.imgur.com/q5zK8Q1.png)
73.重新打开EnemyMovement脚本,把所有的注释符号都删掉
![](http://i.imgur.com/qE61Wpb.png)
74.重新打开PlayerHealth脚本,移除所有的注释代码符号
![](http://i.imgur.com/NONS6g6.png)
![](http://i.imgur.com/33OcbFy.png)
![](http://i.imgur.com/7KiSM41.png)
2016年1月27日21:37:53 GOOOOO ON..
75.保存,测试。可以运行,但是有个问题,游戏一开始,前面一直射击的话 会播放 粒子烟雾动画和枪口火光粒子烟雾动画 如果停火或者射偏的话 然后再次射击 就不会播放动画了,找了很多资料,也问了些人。没搞好,正准备先搁一边的时候,改了一下,加了一句代码竟然解决了。可能是版本问题。下面就是解决的方法。
![](http://i.imgur.com/9Dl1NLi.png)
就是在play前调用一次Simulate()方法,以后再研究一下这个方法是干嘛的吧。
保存,运行,没问题了。
76.选中HUDCanvas,右键UI->Text 新建一个Text子物体,重命名为ScoreText
![](http://i.imgur.com/tEPxR7D.png)
77.选中这个Text 设置锚点对齐方式为“中上”,位置,大小,都要设置一下。在然后是显示的文字“Score:0”字体选择一个自带的Luck字体,字体大小设为50,设置水平垂直居中对齐,设置字体颜色为白色,具体可参照如下
![](http://i.imgur.com/HL49gO3.png)
78.添加一个Shadow组件,参数设为 2 ,-2
![](http://i.imgur.com/Ylsrk1z.png)
整体效果如下
![](http://i.imgur.com/soelljk.png)
79.把ScoreManager脚本拖给ScoreText物体上
![](http://i.imgur.com/lBCeSio.png)
代码
![](http://i.imgur.com/cSnJgOE.png)
80.重新打开EnemyHealth脚本,在最下面,取消注释增加分数的代码
![](http://i.imgur.com/VCgJaCm.png)
值得注意的是这里的StartSinking方法是在该角色的死亡动画播放时触发的一个事件,该事件就调用了这个方法
![](http://i.imgur.com/gzTuttC.png)
81 . 在预置文件夹里再拖一个敌人Zombear到场景中,并指定动画控制机为EnemyAC,它的行为和动画都和Zombunny类似
![](http://i.imgur.com/FghYC8k.png)
82.在Animation文件夹上右键新建一个Animator Override Controller,重命名为hellephantAOC
![](http://i.imgur.com/LZzdchq.png)
83.选中这个控制器,在右边制定Controller为EnemyAC,并把要覆盖的动画片段相应的拖上去覆盖掉
![](http://i.imgur.com/EizPt9J.png)
84.别忘了指定该游戏物体的动画控制器
![](http://i.imgur.com/I0nh5DM.png)
保存,测试,没有问题
记:无意间发现ZomBear和Hellephant两种敌人角色下面还带着一个 DeathParticles
![](http://i.imgur.com/zAbEcyD.png)
目测应该是死亡时播放的粒子动画,所以就加了些代码时死亡是这个粒子动画能播放
首先是声明变量
ParticleSystem deadParticles;
然后是获取组件
deadParticles = transform.Find("DeathParticles").GetComponent<ParticleSystem>();
然后在Dead方法中播放粒子动画
![](http://i.imgur.com/uvKUySe.png)
这样就可以了。
2016年1月27日23:32:23 今天到这
2016年1月28日10:22:39 GO OOOON
85.新建一个空物体,重命名为EnemyManager,在把Scripts文件夹里的EnemyManager脚本拖到此物体上
![](http://i.imgur.com/GBztYho.png)
代码
![](http://i.imgur.com/xO1nwhk.png)
86.新建三个空物体,在Tag地方指定上不同的颜色,放在不同的位置,命好名
![](http://i.imgur.com/wtvoWUG.png)
87.回到EnemyManager物体,给它指定3个EnemyManager脚本,并指定好PlayerHealth,和不同的Enemy物体,和不同的出生点
![](http://i.imgur.com/AGC2qVb.png)
88.在HUDCanvas上右键 新建一个子物体Image重命名为ScreenFader,设置为铺满屏幕,颜色改成个淡蓝色
![](http://i.imgur.com/kXhNJgS.png)
89.再右键UI->Text,重命名为GameOverText,设置为居中,设置宽度300高度50,文字内容为GameOver! 字体用分数的那个Luck字体,大小为50.段落对齐为水平垂直居中对齐,再加一个Shadow组件
![](http://i.imgur.com/r6yAB9v.png)
90.确定HUDCanvas中各个物体的顺序是下面这样的,因为排列的顺序不一样,显示的内容也不一样
![](http://i.imgur.com/iuVbZ2P.png)
91.分别把ScroeText和ScreenFader的Alpha值设为0,使其完全透明
![](http://i.imgur.com/Tg8oLiP.png)
92.选择HUDCanvas,点击菜单Window->Animation,为其创建一个动画
![](http://i.imgur.com/XnRVNnN.png)
点击创建,保存到Animation文件夹
![](http://i.imgur.com/1AZtMZv.png)
93 . 把GameOverText->Text->Color添加曲线动画
![](http://i.imgur.com/ubWzYwk.png)
94 . 分别把下面需要添加动画的元素都添加进来
![](http://i.imgur.com/8qyADnI.png)
95 . 给他们分别添加上关键帧,先把它们的结束帧都拖到 30帧的位置,然后把时间线拉到第0帧,选择GameOverText:Scale的缩放,在第0帧设为0,再把时间线拉倒第20帧,把缩放设为1.2,再把时间拉倒30帧,把缩放设为1,颜色的Alpha值都设为1(显示),把得分文字的缩放设为0.8 ,然后选择所有的关键帧,把它们移动到1:30的位置,再关闭自动记录关键帧的按钮
![](http://i.imgur.com/AQM27JR.png)
96 . 选择刚才的GameOverClip 取消勾选Loop 循环
![](http://i.imgur.com/2qqj2Qo.png)
97.打开HUDCanvas下的HUDCanvas动画状态控制器
![](http://i.imgur.com/PDR9X6M.png)
新建一个空的状态,使其和GameOverClip连接上,设置过度条件为Trigger 名字为GameOver
![](http://i.imgur.com/l4BDz0s.png)
98.把脚本文件夹中的GameOverManager脚本指定给HUDCanvas,并打开脚本
![](http://i.imgur.com/G4kD8n1.png)
内容如下
![](http://i.imgur.com/VizlU7w.png)
记得指定脚本
![](http://i.imgur.com/77dVQj9.png)
这样游戏结束了以后就会播放动画,然后会重新开始游戏。
到此,就已经完成了!但是我又继续优化了一下,我不想让玩家死亡后游戏自动重新开始,而是按”R”键,游戏才重新开始,按ESC键暂停游戏,再次按ESC键继续游戏,于是打开GameOverManager脚本编辑,添加如下代码
![](http://i.imgur.com/EGhVwjd.png)
99.保存,测试,OK!至此,这个项目就算完结了吧!
100.后续还可以加入很多功能,比如怪死亡以后会掉落物品,这些物品有的可以补充生命值,有的可以增强玩家的火力,或者玩家可以跳跃,这样怪就抓不到玩家了,还有一些BUG需要修复,比如敌人会源源不断的生成,这样会不断的消耗系统资源,可以设定在敌人出现以后多长时间如果没死的话就自动销毁。等等还有很多很多……
下面是链接
或者网址http://pan.baidu.com/s/1i4k1elv
Done
. 2016年1月28日14:26:20
相关文章推荐
- EVP5 Unity5 汽车物理引擎demo分析
- Unity全屏模糊
- unity+slua热更流程演示
- 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题
- unity c# enum
- Unity WebPlayer自定义进度条界面
- [置顶] 一些值得学习的Unity教程
- unity3D 插件plugins
- 使用unity做的绩点计算器
- 【Unity Shader】HSV和RGB互转的shader实现
- Unity3d之剥离 alpha 通道
- 美术同学最近自己找了个shader用来做动态的草和旗,结果出了一些问题(顶点动画shader)
- Unity手游:自动寻路Navmesh入门
- Unity渲染队列
- Unity3d中单例模式的使用
- Unity Assets目录下的特殊文件夹名称
- Unity3D JavaScript代码学习笔记1
- unity 项目build 的时候后报错An asset is marked with HideFlags.DontSave but is included in the build:
- 在Unity游戏开发中使用暂停的小技巧
- Oculus dk2通过unity如何看视频