下面是演示环节 我们在《慕课英雄》第三人称简易版中
添加自动生成敌人的功能。
现在我们已经在 Unity 编辑器中打开了《慕课英雄》第三人称简易版的项目
我们使用金字塔模型的 Top 子对象 来自动生成敌人对象。
首先我们选中 Top 子对象 点击
Add Component 按钮,给 Top 对象添加
Auto Create Object 脚本
接着,我们设置 Auto Create Object
组件的相关参数 我们设置 Create Game Object
为 Project 视图中的 Zombie 预制件
同时,设置 Min Second 与
Max Second 它们是生成敌人的最小、
最大时间间隔 最后,我们设置 Taget Trace
追踪对象为 Hierarchy 视图中的 RobotPlayer
玩家对象 然后,我们点击刚才 Top
对象所属的金字塔对象 点击 Apply
按钮将修改应用之预制件 这将影响其他金字塔对象
点击其它金字塔对象 我们发现,其它金字塔对象也绑定了
Auto Create Object 脚本。
这里我们需要设置这些脚本的 Taget Trace 参数 我们将其设为
RobotPlayer [空白录音]
下面,我们删除场景中所有的 Zombie
对象 我们点击 Hierarchy 中的 Zombie 对象
点击鼠标右键 点击 delete
删除 Zombie 对象 [空白录音]
下面开始预览游戏
[空白录音]
我们发现僵尸不断从金字塔中生成,来追踪玩家 [声响]
[声响] 玩家需要躲避敌人的追踪,并开枪射击敌人
[声响] 在玩家存活的情况下,消灭僵尸获取目标分数来赢得游戏
以上,就是《慕课英雄》第三人称简易版项目的全部游戏内容
下面,我们讲解 Auto Create Object
脚本 首先,是变量声明
我们声明了一个名为 createGameObject
的字段,它表示自动生成了游戏对象 minSecond
与 maxSecond 表示 随机生成游戏对象的最小、
最大时间间隔 Taget Trace 表示生成游戏对象的追踪目标
下面我们看 Start
函数 若追踪目标未进行设置
我们将在 Start 函数中获取场景中的玩家对象
同时,我们初始化
与上一次生成对象的时间间隔
最后 在
Start 函数中我们需要设置第一次生成
对象的时间,这里我们使用 Random.Range
函数 在 minSecond 到max Second
的闭区间中随机生成一个时间 下面,是Update
函数 首先,我们需要检测游戏状态是否是游戏进行状态
如果游戏状态不是游戏进行状态 我们将不生成敌人对象,使用
return 结束 Update
函数的运行 在 Update 函数中我们更新 timer
的值 使其累加上一帧所花费的时间,Time.deltaTime
若与上一次生成敌人对象的时间间隔
大于上一次所设置的生成时间 我们将调用
CreateObject 函数生成游戏对象 同时,将与上一次生成敌人的时间间隔
清零,最后 再使用
Random.Range 函数重设 下一次生成敌人的时间。
最后,我们看 CreateObject 函数
该函数用于生成游戏对象。
我们使用 Instantiate 函数生成游戏对象
Instantiate 函数的调用需要传入三个参数
第一个参数表示生成对象的预制件 这里,我们在
Inspector 中将其设置为僵尸 预制件 Zombie
第二个参数表示生成对象的位置 我们这里使用
AutoCreateObject 脚本绑定对象所在的位置
加上一定的偏移量 deltaVector 也就是在 Top
对象的正下方生成僵尸对象 最后,是生成对象的朝向
这里我们设置为 transform 对象的 rotation 参数
最后,我们需要设置生成对象的追踪目标 我们获取敌人对象的
EnemyTrace 脚本组件 将其追踪目标设置为场景中的玩家对象
RobotPlayer 讲解完 Auto Create Object
脚本后 我们回到 Unity 编辑器,点击 File 菜单下的
Save Scene 按钮 保存场景,最后点击 File
菜单下的 Build Settings 构建游戏项目。
这里,我们在 Build 目录下构建我们的项目
如果你没有 Build 文件夹,你
可以在这里点击鼠标右键,新建一个文件夹将其重命名为 Build
我们将项目的构建结果放在 Build 目录下 以方便进行管理。
我们将构建的项目名称设置为 Mooc Hero TPS
点击保存构建我们的项目 [空白录音]
构建完成后就可以使我们的游戏脱离 Unity 编辑器,独立运行
项目生成完毕后,我们在 Build
目录下,双击 Mooc Hero TPS.exe
文件即可打开运行游戏 [空白录音]
[声响]
以上,就是本节演示的全部内容