🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
敌人模块 武器模块 HTC VIVE 玩家模块 ![](https://img.kancloud.cn/e7/ff/e7ffb1a40ba1dd8afe7f24738aaf5a81_668x433.png) ## **敌人:** 策划 敌人沿指定路线运动。 受击后减血死亡。 到达终点攻击玩家。 运动播放跑步动画,攻击播放攻击动画,攻击间隔播放闲置动画,死亡播放死亡动画。 拿到策划的需求时, 进行需求分析 : 创建脚本-敌人马达EnemyMotor,提供移动、旋转、寻路功能。 创建脚本-敌人状态信息EnemyStatusInfo ,定义血量,提供受伤、死亡的功能。 创建脚本-敌人动画EnemyAnimation ,定义各种动画名称,提供播放动画的功能。 创建脚本-敌人AI EnemyAI,通过判断状态,执行寻路或者攻击。 代码实现: 敌人马达EnemyMotor \---定义向前移动的方法 \---定义朝向目标点旋转的方法 \--定义寻路的方法。 代码实现, 敌人状态信息EnemyStatusInfo \---定义变量:当前生命值,当前生命值。 \--定义方法:受伤,死亡。 策划 开始时生成指定数量的敌人。 为每人随机选择一条可以使用的路线。 要求:敌人类型、产生的延迟时间随机。 当敌人死亡后,再产生下一个敌人,直到生成数量到达上为止。 ![](https://img.kancloud.cn/b2/6a/b26a6b6eca67ba53c7f3084a58a38d13_876x582.png) ![](https://img.kancloud.cn/ec/60/ec60e453e59fc34a130a9c03b97d3968_297x218.png) **代码实现** 敌人生成器EnemySpawn ---定义变量WayLine\[\] lines用于存储所有路线。 GameObject[] enemyTypes用于记录敌人预制件。 int startCount用于记录开始时需要创建的敌人数量。 int spawnedCount用于记录已经产生的敌人数量 int maxCount用于记录产生敌人数量的上限 int maxDelay用于记录产生敌人的最大延迟时间 ---定义方法CalculateWayLines()用于计算所有路线及坐标 GenerateEnemy() ,用于生成一个敌人。