unity自动生成敌人_Unity学习笔记二:敌人模块和敌人生成器模块脚本编写思路梳理(2)...
此专栏为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)...相关推荐
- Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告
Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
- 二维码学习笔记(二) | 数据分析与数据编码
唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...
- Unity API常用方法和类学习笔记2
Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...
- wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)
如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- MATLAB学习笔记——二维和三维绘图
MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...
- 项目管理学习笔记二:信息系统服务管理
项目管理学习笔记二:信息系统服务管理 2010-10-22 09:56:33 标签:信息系统 笔记 项目管理 服务 学习 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ...
- pythonsze_python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...
最新文章
- 深入理解:RabbitMQ的前世今生
- python小课文件_[Python]小甲鱼Python视频第028课(文件:因为懂你,所以永恒)课后题及参考解8...
- DockerFile 参数详解
- 【转】 Android 屏幕切换总结
- Windows SendMessage和PostMessage区别(最简单的讲解)
- GPUImage API 文档之GPUImageFilter类
- tomcat 发布到服务器启动不了
- 淘宝TDDL深入浅出
- 100w条数据插入Mysql 数据库,耗时仅10s
- VMware Workstation虚拟机无法运行
- oracle删临时表,ORACLE中创建和删除临时表
- 什么是DNS域名解析
- 用cocos studio生成plist文件
- SpringCloud 之分布式 CAP 定理
- 西数、希捷、DIY移动硬盘详细拆解,暴力解析
- kkFileView优化PDF图片预览增加JPEG2000标准图片支持
- 国产 android 平板,三大旗舰新品 国产Android系统平板对比
- 计算机图形学 | 实验四:绘制一个球体
- keydown、input、keyup
- python pip安装包时出现 ValueError: check_hostname requires server_hostname 错误 解决方法
热门文章
- 《Dreamweaver CS6 完全自学教程》笔记 第二章:Dreamweaver CS6 入门
- 目标检测数据集格式转换(yolo→voc)
- 中国大学排行榜网站的爬取
- 大事务的处理方式对比
- 剩余电流动作继电器在浴室中的应用
- matlab hurst代码,Hurst指数法matlab程序求助
- w ndows键盘哪个键,B.O.W航世的蓝牙键盘的BackSpace键失灵怎么办?Windows修改键盘映射帮到你。...
- 基于SpringBoot+JSoup+POI+Swagger2实现校园教务系统成绩课程等信息抓取,并提供接口访问的小项目
- 【转】芯片设计流程 芯片的设计原理图
- git 终端配置mac(udacity)