第31课(2课时) 异星猎手:敌人出生点设计_第1页
第31课(2课时) 异星猎手:敌人出生点设计_第2页
第31课(2课时) 异星猎手:敌人出生点设计_第3页
第31课(2课时) 异星猎手:敌人出生点设计_第4页
第31课(2课时) 异星猎手:敌人出生点设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作者:李永亮第26课(2课时)异星猎手:敌人出生点设计围绕异星猎手项目,讲解Unity中敌人出生点的实现逻辑010203040506目录游戏规则解析敌人预制体制作出生点对象创建出生点脚本设计出生点组件配置场景出生点布置01游戏规则解析明确游戏胜利失败条件、敌人生成及主角状态约束规则123…定义玩家达成胜利或触发失败的核心条件,为后续逻辑提供依据胜利失败判定胜利判定失败判定状态检测时机玩家操控主角消灭所有40个敌人时,游戏判定为胜利,结束当前关卡流程主角生命值下降至0时,游戏判定为失败,触发结算界面或关卡重置游戏管理器实时监听主角生命值与敌人总数,满足条件立即触发判定约束敌人出现的数量、频率及场景同时存在的上限,平衡游戏难度敌人生成规则总数量限制场景数量上限生成间隔规则生成触发条件前后总共出现40个敌人,达到数量后停止生成新敌人场景中最多同时存在10个敌人,避免敌人过度密集导致卡顿每隔随机时间生成敌人,时间范围为最大间隔的一半到最大值之间通过出生点脚本的协程控制,满足条件时调用生成方法限定主角在游戏过程中的核心状态参数,保障游戏逻辑的一致性主角状态约束生命值约束操作权限约束状态同步机制状态重置时机主角初始生命值为固定值,受敌人攻击后减少,为0时触发失败游戏进行中主角可正常移动、攻击,失败后锁定操作主角生命值变化实时同步至游戏管理器,用于失败判定关卡重新开始时,主角生命值恢复初始值,状态回归正常02敌人预制体制作将场景中的敌人角色转换为预制体,为后续动态生成提供模板从场景中选择已配置功能的敌人角色作为预制体模板选择敌人对象功能确认场景定位模板有效性选择已添加导航、被摧毁、自爆3个功能的敌人角色“bomb_bot1”在Hierarchy窗口中找到“bomb_bot1”对象,确认其层级结构检查敌人对象的组件完整性,确保预制体生成后功能正常01030204通过拖曳操作将敌人对象转换为预制体,保存至指定路径拖曳生成预制体拖曳操作预制体生成场景对象保留预制体验证将Hierarchy窗口中的“bomb_bot1”拖曳到Project窗口的Prefabs文件夹拖曳完成后,Project窗口中自动创建“bomb_bot1”预制体生成预制体后,场景中的敌人对象可保留用于后续测试选中生成的预制体,检查Inspector窗口中组件是否与原对象一致4312规范预制体的存储路径,便于项目资源管理与后续调用预制体路径设置路径选择路径创建路径验证批量管理将预制体保存至“Assets\Prefabs\”路径下,遵循项目资源分类规则若Prefabs文件夹不存在,右键创建新文件夹并命名为Prefabs确认预制体存储路径正确,避免后续脚本调用时出现路径错误后续新增敌人预制体统一保存至该路径,保持资源结构一致性03出生点对象创建创建独立的敌人出生点对象,为敌人动态生成提供位置参考在敌人对象下创建空对象,继承其位置与方向属性作为出生点基础创建空对象右键操作子对象生成位置合理性在Hierarchy窗口的“bomb_bot1”对象上右键,选择“CreateEmpty”生成的空对象默认作为“bomb_bot1”的子对象,位置方向与其一致利用子对象继承性,确保空对象具备合适的出生点位置与方向为生成的空对象重命名,明确其作为敌人出生点的功能重命名出生点右键重命名名称输入名称规范性功能标识在空对象上右键,选择“Rename”命令输入新名称“EnemySpawn”,按Enter键完成重命名使用英文名称便于脚本识别,避免中文名称导致的编码问题名称直接体现对象功能,便于后续层级管理与脚本关联将出生点对象从敌人对象中分离,成为独立的场景对象脱离父子关系拖曳分离父子关系解除场景清理独立性验证将“EnemySpawn”对象拖曳到Hierarchy窗口的空白处拖曳后“EnemySpawn”不再是“bomb_bot1”的子对象,位置保持不变删除场景中“bomb_bot1”及其副本,避免对后续生成逻辑造成干扰选中“EnemySpawn”对象,确认其Transform组件不受其他对象影响04出生点脚本设计编写EnemySpawn脚本,实现敌人动态生成、计时及事件触发功能010203创建可传递敌人对象的Unity事件类,实现出生点与游戏管理器的通信自定义事件类命名空间引入事件类定义事件功能添加usingUnityEngine.Events;命名空间,使用Unity事件功能定义[System.Serializable]的EnemyBornEvent类,继承UnityEvent用于在生成敌人时将新敌人对象传递给游戏管理器,减少类耦合3124声明脚本所需的核心成员变量,用于控制敌人生成逻辑成员变量定义敌人预制体变量事件变量最大生成间隔生成开关[SerializeField]GameObjectenemy,指定生成敌人的预制体模板publicEnemyBornEventOnBornTime,敌人生成时触发的事件publicfloatmaxBornInterval=6f,控制敌人生成的最大时间间隔publicboolisBornEnable=true,控制是否允许生成敌人的开关使用协程实现敌人的定时生成,控制生成频率与时机协程计时实现协程方法定义等待时间设置生成方法调用协程控制创建IEnumerator类型的BornTimeCount()方法,实现计时逻辑yieldreturnnewWaitForSeconds(Random.Range(maxBornInterval/2f,maxBornInterval))等待结束后调用Born()方法生成敌人,启动下一次协程通过isBornEnable开关控制协程是否执行,避免无效生成05出生点组件配置为出生点对象挂载脚本并配置参数,使其具备生成敌人的功能将编写好的EnemySpawn脚本挂载到出生点对象上挂载脚本组件脚本创建挂载操作组件验证在Assets\Script\路径下创建C#脚本,命名为EnemySpawn并编写代码将EnemySpawn脚本拖曳到Hierarchy窗口的“EnemySpawn”对象的Inspector窗口确认Inspector窗口中显示“EnemySpawn”组件,参数默认值正确将敌人预制体赋值给脚本的enemy变量,指定生成模板赋值敌人预制体保持选中预制体拖曳赋值验证批量赋值保持“EnemySpawn”对象处于选中状态,不切换其他对象从Project窗口的Assets\Prefabs\路径下将“bomb_bot1”预制体拖曳到脚本的enemy属性确认enemy属性显示为“bomb_bot1”预制体,无None状态若有多个出生点,可通过复制组件快速完成预制体赋值将配置好的出生点对象转换为预制体,便于后续批量布置制作出生点预制体拖曳生成预制体命名预制体复用预制体更新将Hierarchy窗口中的“EnemySpawn”对象拖曳到Project窗口的Assets\Prefabs\路径下生成的预制体默认命名为“EnemySpawn”,保持名称与脚本一致后续场景中布置出生点时,直接使用该预制体拖曳到场景若脚本参数调整,可直接修改预制体,所有实例同步更新06场景出生点布置在场景中放置多个出生点预制体,设置合理的位置与朝向123…创建空对象作为所有出生点的父对象,便于统一管理创建父对象空对象创建父对象命名Transform重置在Hierarchy窗口空白处右键,选择“CreateEmpty”创建新空对象将空对象重命名为“EnemySpawns”,作为所有出生点的父容器点击Transform组件右侧三点图标,选择“Reset”重置位置旋转缩放将出生点预制体拖曳到父对象下,生成多个出生点实例拖曳放置出生点预制体拖曳实例生成数量控制层级检查从Project窗口的Assets\Prefabs\路径下将“EnemySpawn”预制体拖曳到“EnemySpawns”对象上生成的出生点实例自动成为“EnemySpawns”的子对象,位置默认继承父对象根据场景大小拖曳生成多个出生点实例,建议数量为3-5个确认所有出生点实例均在“EnemySpawns”父对象下,层级结构清晰01030204调整每个出生点的位置与朝向,确保敌人生成位置合理调整位置朝向视图切换位置调整朝向调整分布验证在Scene视图中切换到正射投影顶视图,便于观察出生点位置使用平移工具将出生点移动到场景中的合适位置,避免过于集中在Inspector窗口中调整Transform组件的Rotation属性Y分量,使敌人朝向主角方向从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论