此专栏为B站视频 AV28779788 的三部分 Unity脚本部分《英雄无敌》项目的敌人模块和敌人生成器模块的思路梳理。如果有疑问,欢迎来提问;如果发现错误,请您务必指正,谢谢。

此篇是 cv4773719 的后续,敌人生成器模块部分      2233真可爱

敌人生成器模块

策划需求分析

将策划内容细分:可以生成敌人

可以筛选出可用路线

敌人类型、产生时间和移动路线要随机

有敌人总数限制

敌人死亡后才生成下一个敌人

游戏开始时要生成指定数量敌人

需要编写两个类:

Unity中已经创建的路点结构

WayLine类:

首先编写存储路点信息的工具类WayLine,因为是工具类所以不需要继承MonoBehaviour类

定义属性,这一属性的目的是存储当前路线的全部路点信息

定义属性,这一属性的目的是表示当前路线是否可以使用    是:true;否:false

定义构造函数,函数内部给两个属性赋初值,这样可以方便对该类对象的实例化;因为WayPoints属性为数组,所以需要传入int类型变量wayPointCount,用来确定WayPoints数组的长度;因为路线刚创建出来时,肯定没有被占用,所以IsUsable初始化为true

EnemySpawn类:

定义字段,目的是存储当前生成器所要生成的全部的敌人种类,因此存储的是物体

定义字段,分别存储需要创建的敌人最大数目、已创建的敌人数量、开始时需创建的敌人数目

定义字段,目的是存储当前生成器下的全部路线

筛选全部可用路线功能:

路线选择之前,先要获得全部的路线信息,因此定义CalculateWayLines方法来获取信息并存在字段lines里

然后再编写筛选全部可用路线的方法SelectUsableWayLine;因为要返回全部的可用路线信息,所以要有WayLine[ ]类型的返回值;因为每次得到的可用路线数量不确定,所以使用List容器存储

生成敌人功能:

生成敌人前需要判断已生成人数是否达到最大值,是则不生成,否则生成并将已生成人数加一;因为要求生成敌人时要有延迟时间并且要随机,所以通过Object类的Invoke方法实现,由于延迟时间有最大值,所以引入字段maxDelayTime确定最大延迟时间

然后编写创建敌人的方法,要挑选一条可用路线,创建物体并配置物体的各种信息;创建物体时,使用Object类的Instantiate方法,但因为该方法的返回值是Object类型,所以要转换成GameObject类型

在编写配置物体信息前,要更改EnemyMotor内部目标点集的获取方法原方法

新方法

原方法

新方法

此时再去写CreateEnemy方法里的配置信息的代码

但此时会出现一个问题是当一条路线生成过敌人后,就一直不可用了,所以要在EnemyStatusInfo类里的敌人死亡方法Death内部加上将IsUsable属性变为true的方法

但此时无法在当前敌人死后调用生成新的敌人的方法,并且由于游戏内会有多个生成器,更无法确定原生成器是哪一个,所以这里采用回调思想,但这种思想并不建议,当学会 委托 后,要用委托代替

回调思想实现:在EnemyStatusInfo类内添加字段,用来存储原生成器的引用

CreateEnemy方法内传递引用

回调实现后就可以在EnemyStatusInfo类的Death方法内调用生成敌人方法了

游戏开始创建指定数量的敌人功能:

在生成器的Start方法里先获取全部线路信息,再通过for循环创建指定数量的敌人

将敌人身上的脚本添加预制件Prefabs里,可以通过下面的代码绑定脚本,添加一个脚本后其他脚本自动添加添加EnemyAI脚本后另外三个脚本自动添加

将脚本添加到根路线上,并且放入生成器所要生成的全部的敌人种类的预备件

测试结果(因为B站专栏不能上传8MB以上的图片,所以下面的图片是截取了一部分):awsl

那么《敌人模块和敌人生成器模块脚本编写思路梳理》部分就完结了,之后可能会继续更新我之后学习的内容,但是随缘吧( ̄▽ ̄)

unity自动生成敌人_Unity学习笔记二:敌人模块和敌人生成器模块脚本编写思路梳理(2)...相关推荐

  1. Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告

    Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...

  2. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  3. 二维码学习笔记(二) | 数据分析与数据编码

    唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...

  4. Unity API常用方法和类学习笔记2

    Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...

  5. wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  6. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  7. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  8. MATLAB学习笔记——二维和三维绘图

    MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...

  9. 项目管理学习笔记二:信息系统服务管理

    项目管理学习笔记二:信息系统服务管理 2010-10-22 09:56:33 标签:信息系统 笔记 项目管理 服务 学习 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ...

  10. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

最新文章

  1. 深入理解:RabbitMQ的前世今生
  2. python小课文件_[Python]小甲鱼Python视频第028课(文件:因为懂你,所以永恒)课后题及参考解8...
  3. DockerFile 参数详解
  4. 【转】 Android 屏幕切换总结
  5. Windows SendMessage和PostMessage区别(最简单的讲解)
  6. GPUImage API 文档之GPUImageFilter类
  7. tomcat 发布到服务器启动不了
  8. 淘宝TDDL深入浅出
  9. 100w条数据插入Mysql 数据库,耗时仅10s
  10. VMware Workstation虚拟机无法运行
  11. oracle删临时表,ORACLE中创建和删除临时表
  12. 什么是DNS域名解析
  13. 用cocos studio生成plist文件
  14. SpringCloud 之分布式 CAP 定理
  15. 西数、希捷、DIY移动硬盘详细拆解,暴力解析
  16. kkFileView优化PDF图片预览增加JPEG2000标准图片支持
  17. 国产 android 平板,三大旗舰新品 国产Android系统平板对比
  18. 计算机图形学 | 实验四:绘制一个球体
  19. keydown、input、keyup
  20. python pip安装包时出现 ValueError: check_hostname requires server_hostname 错误 解决方法

热门文章

  1. 《Dreamweaver CS6 完全自学教程》笔记 第二章:Dreamweaver CS6 入门
  2. 目标检测数据集格式转换(yolo→voc)
  3. 中国大学排行榜网站的爬取
  4. 大事务的处理方式对比
  5. 剩余电流动作继电器在浴室中的应用
  6. matlab hurst代码,Hurst指数法matlab程序求助
  7. w ndows键盘哪个键,B.O.W航世的蓝牙键盘的BackSpace键失灵怎么办?Windows修改键盘映射帮到你。...
  8. 基于SpringBoot+JSoup+POI+Swagger2实现校园教务系统成绩课程等信息抓取,并提供接口访问的小项目
  9. 【转】芯片设计流程 芯片的设计原理图
  10. git 终端配置mac(udacity)