欢迎大家继续学习 Unity
游戏编程基础 上一节我们讲述游戏中物品收集功能的实现
本节我们讲述游戏胜利和失败画面的效果制作 本节将
采用 PPT 讲解和项目演示的方式进行介绍 介绍游戏胜利和失败画面相关的技术要点
我们的演示阶段演示了游戏胜利与失败画面占《慕课英雄》第一人称完整版中的应用 下面我们进入
PPT 讲解阶段 首先,介绍游戏胜利画面的效果
玩家获得指定的分数后,游戏进入胜利画面 游戏胜利画面需要实现以下两个效果
首先删除场景中的敌人与玩家枪械。
其次 游戏结束摄像机从玩家视角逐渐平移到天空,并俯视地面
下面我们讲解如何实现游戏胜利画面 本页
PPT 给出 GameOverEffects 脚本中
实现游戏胜利画面的代码片段:首先是删除场景中所有敌人对象与玩家手中的枪械 我们使用
GameObject 类的 FindGameObjectWithTag 函数 根据敌人标签
Enemy 获取场景中所有敌人对象 保存在敌人数组中,我们使用
foreach 语句快速便利 敌人数组,使用 GameObject 类的
Destroy 函数逐一删除场景中的所有敌人 我们根据 GameObject
类的 Find 函数 根据玩家枪械的名称 Gun
获取场景中的枪械对象,同时使用 GameObject 类的 Destroy
函数 删除枪械对象
下面我们讲解游戏结束、 相机平移的实现 本页
PPT 给出游戏结束摄像机平移的轨迹 游戏结束摄像机从玩家的位置逐渐平移到天空
在平移过程中,游戏结束摄像机始终朝向玩家的位置 本页 PPT
给出 GameOverEffects 脚本中 实现游戏结束、
摄像机平移的代码片段 我们使用三维向量类的插值函数,采用线性插值的方法实现摄像机的平移
游戏结束摄像机的起始位置是玩家的位置 摄像机的最终位置是玩家位置加上一个偏移量
我们使用 Transform 类的 LookAt 函数,使用玩家的 Transform
属性作为参数 实现游戏结束摄像机始终朝向玩家的功能 以上内容是游戏制作胜利画面的知识要点
下面讲解游戏失败时的效果 玩家生命值小于等于零时,游戏进入失败画面
游戏失败画面需要实现以下四个效果:首先删除场景中的敌人与玩家枪械
其次,游戏结束摄像机从玩家视角逐渐平移到天空 俯视地面。
接着屏幕瞬间变黑,然后恢复正常 最后敌人排成一排,并播放欢呼的动画
前两点效果与游戏胜利相同,我们不再重复讲解 下面我们讲解游戏失败画面的后两点效果
首先是屏幕瞬间变黑 之后逐渐恢复正常的效果。
本页 PPT 给出 GameOverEffects 脚本中 实现该效果的代码片段。
我们定义 darkImage 字段 表示笼罩在摄像机前的 Image 控件
游戏进行时,darkImage 处于全透明 不遮挡摄像机绘制的场景画面。
游戏失败时,darkImage 的颜色设置为不透明黑色 屏幕瞬间变黑。
我们使用 Color 类的插值函数 采用线性插值的方法,实现 darkImage
的颜色从不透明黑色 到透明无色的界面效果
下面讲解场景中,敌人排成一排、 欢呼效果的实现
首先是敌人对象的生成,我们使用 GameObejct 类的 Instantiate
函数实现 其次是敌人面向摄像机,我们使用 Transform 类的 LookAt
函数实现 最后是敌人的欢呼动画:我们使用动画控制器,设置敌人的动画参数
控制敌人欢呼动画的播放 下面我们讲解
GameOverEffects 脚本中实现敌人生成的代码片段 首先计算
enemyCenter:敌人的中心位置坐标 其次计算
enemyVector:敌人之间的单位方向向量 我们使用三维向量类的 Normalize
函数单位化 enemyVector 我们在 for
语句中循环生成一排敌人 在 for
循环中,我们使用 GameObejct 类的 Instantiate 函数依次生成敌人对象
我们使用 Transform 类的 LookAt 函数使敌人朝向摄像机,同时更改敌人
Transform 属性的欧拉角值 使敌人只在 y
轴方向上旋转 下面我们讲解 EnemyTrace
脚本控制敌人欢呼、 动画播放的代码片段 我们根据 GameManager
脚本中的 GameState 属性 判断当前游戏状态是否为游戏失败状态
如果当前游戏状态是游戏失败状态 我们使用 anim 类的
SetTrigger 函数设置敌人的动画参数 播放敌人欢呼动画。
到本节为止 我们完成了《慕课英雄》第一人称射击游戏的制作,下一节我们对项目进行简单总结
最后进入演示环节。
演示环节的内容包括游戏结束摄像机的创建
游戏结束效果脚本,GameOverEffects 绑定