Unity3D RPG Core | 10 设置敌人的基本属性和状态
这节内容开始添加敌人。首先如图 1 所示,下载和导入包含史莱姆和乌龟的素材。
添加敌人素材之后,我们需要将其升级为 URP 材质。升级的步骤之前已经讲过,忘记了的话可以查看 《Unity3D RPG Core | 01 创建项目导入素材》 里的记录。
1. 添加敌人控制脚本
与之前的人物控制脚本类似,我们创建敌人的控制脚本,命名为 EnemyController。
视频中介绍了一种方法:当需要确保附加脚本的对象上有某一组件,可以使用 RequireComponent 特性。如代码清单 1 第 14 行所示,我们确保附加对象上有 NavMeshAgent 组件。
同时代码中定义了 EnemyStates 枚举类,对应敌人的守卫、巡逻、追击和死亡状态,后续再进行逻辑完善。
2. 敌人设置
我们将素材里的敌人预制体添加到场景之后,就可以在 Inspector 窗体中,如图 2 所示,对相关内容进行设置。
首先我们将敌人控制脚本拖拽添加到敌人对象上,可以看到这时候 RequireComponent 特性生效了,它自动为对象添加了 Nav Mesh Agent 组件。我们调整 Nav Mesh Agent 组件下的 Steering 选项,让敌人跑得比人物慢一点,方便之后可以“脱战”;调整 Obstacle Avoidance 选项,让敌人的障碍区域更加“贴近”模型。
我们还需要为敌人添加 Collider 碰撞组件,结合碰撞检测来实现攻击功能。同时也调节碰撞区域让它更“贴近”模型。
其他设置
敌人对象还有一些东西需要设置。如图 3 所示,将敌人的 Layer 也设置为自定义的遮挡效果层,因为敌人也可能跑到树木后面,这部分内容在上一篇文章中介绍过。
接着定义并指定新的 Tag,名称为 Enemy。新的 Tag 用作射线碰撞检测用。
3. 敌人鼠标样式设置
在添加了敌人之后,鼠标移动到敌人身上需要变成攻击样式。根据之前 《Unity3D RPG Core | 06 设置鼠标指针》 中的步骤,我们首先添加攻击鼠标样式素材。
接着如代码清单 2 所示,添加攻击鼠标纹理(m_textureAttack,第 4 行),并在 Unity 界面中拖拽指定。同时增加鼠标样式更改逻辑:射线碰撞检测时,如果碰撞体是敌人,将鼠标样式变为攻击样式(第 11、12 行)。注意敌人对应的 tag 已经在上一节中进行设置,tag 名称需要一致。
图 4 为鼠标移动到敌人身上显示的效果。