UnrealEngine蓝图进阶学习笔记(六):按波次生成敌人
UnrealEngine蓝图进阶学习笔记(六):按波次生成敌人
2020.04.03
一、创建敌人生成点及相关变量
1.部署生成点
左部面板搜索TargetPoint至场景(2250,0,0),ctrl+w进行复制至(0,2250,0)(-2250,0,0)(0,-2250,0),注意生成点尽可能替升90个单位以防character生成在地板中;
2.编辑游戏逻辑
在蓝图-游戏逻辑文件夹中打开GameMode,打开完整蓝图;
新建变量CurrentWave(目前波次,设置0),RemainSpawnNum(现存敌人数),此两个变量不点亮眼睛不予修改,后面变量均可修改;
BaseSpawnNum(目标敌人数,设置整数8),
DifficultyMultiplier(难度系数,设置1.5),SpawnFrequency(每只蜘蛛生成间隔,设置1),WaveFrequercy(每波生成间隔,设置5);
IsPlayerDead(玩家状态,设为布尔值不可修改)
二、获取随机生成点
3.随机生成点的相关设置
创建GetAllSqawnPoints函数(查找场上所有生成点),创建GetAllActorsOfClass节点,提升变量AllSpawnPoint,注意设置Actor类为TargetPoint
创建GetRandomSpawnPoint函数((为每只蜘蛛)设置随机生成点),拖拽Get复制节点,拖拽LastIndex上一索引节点,勾选纯函数常量;
创建SpawnWave函数(生成新一波敌人),每轮自增敌人数,拖拽生成Increment(++自增)节点,创建SetTimerByFunctionName(以函数名设置定时器)节点,每轮生成都调用以下生成单个敌人函数来生成;
创建SpawnSingleEnemy函数(生成单个敌人),拖拽创建SpawnActorFormClass节点;GetActorTransform节点,
此时的生成无法停止,也不知道生成时间,难度也无递增;
三、按波次于难度生成敌人
4.对所有生成的蜘蛛进行注册
设置Spider-Enemy变量AllEnemyRefs,点击小人调成九宫格数组类型;
编辑SpawnSingleEnemy函数,判定怪物有效在场则将生成的Actor加入到AllEnemyRefs数组中;
5.每波生成数及生成延迟的相关设置
创建IsCurrentWareComplete函数,勾选纯函数及常量;当场上怪物生成完了且场上敌人都被消灭,则当前波次结束;
创建SetNextWaveRemainSpawnNum函数,设置下一波生成敌人数;Round(舍入)节点;
在事件图表中创建自定义事件EndWave;
先创建生成RegisterEnemyDeath函数(蜘蛛死亡后注销),拖拽生成RemoveItem节点;
四、订阅玩家死亡事件于完善生成敌人功能
6.初始化第一波次
编辑事件图表,增加延迟后调用生成
7.绑定玩家死亡事件
获取玩家角色,AssignPlayerDead绑定玩家死亡事件的分发器;
8.生成前判定玩家是否死亡
9.敌人死亡后将其注销
编辑蜘蛛蓝图,调用游戏模式并转换类型,调用RegisterEnemyDeath函数,拖拽引出self对自身的引用;
编辑蜘蛛蓝图中的视图,选中跟节点,调节Pawn选项中自动控制Al设置为已放置在场景中或已生成(以前的调试为前者自动赋予Al,此时自动生成敌人为后者)
此时测试蜘蛛将随波次增量生成;
总结:
此节学习了TargetPoint生成点的使用,在游戏模式中完成相关波次的设置;
1.开始运行时设置基础敌人数,获取所有随机生成点,初始化调用第一波次;
2.获取玩家死亡事件生成器并设置相应变量,在蜘蛛生成前判定玩家是否死亡;
3.在SpawnWave函数中设置波数(用于计算该波生成数),用定时器调用生成单个敌人的函数;
4.在生成单个蜘蛛时时调用GetRandomSpawnPoint函数获取该只的生成点并生成Actor,并注册到敌人数组中(用于判断当前场上敌人是否死光;且该波敌人生成完并死亡后该波结束);
5.在SetNextWaveRemainSpawnNum函数设置下一波敌人生成数,下一波数 = 基础生成数 + 当前波数 x 难度系数;
6.蜘蛛死亡后在敌人数组中注销,当前波次完成后调用EndWave事件;
7.EndWave事件中当前波次结束后获取下一波生成数,延迟后调用SpawnWave函数再次开启新波次
UnrealEngine蓝图进阶学习笔记(六):按波次生成敌人相关推荐
- Ethernet/IP 学习笔记六
Ethernet/IP 学习笔记六 EtherNet/IP defines two primary types of communications: explicit and implicit (Ta ...
- opencv进阶学习笔记3:像素运算和图像亮度对比度调节
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...
- JavaSE进阶学习笔记-目录汇总(待完成)
声明:此博客来自于黑马程序员学习笔记,并非商用,仅仅是为了博主个人日后学习复习用,如有冒犯,请联系qq208820388立即删除博文,最后,来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 JavaSE进阶学习笔 ...
- 吴恩达《机器学习》学习笔记六——过拟合与正则化
吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...
- ROS学习笔记六:理解ROS服务和参数
ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...
- opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- JS学习笔记六:js中的DOM操作
1. JS学习笔记六:js中的DOM操作 文章目录 1. JS学习笔记六:js中的DOM操作 1.1. 获取Dom节点 1.2. 元素属性的操作方式 1.3. DOM节点的创建.插入和删除 1.4. ...
- Python学习笔记六——画小猪佩奇
目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
最新文章
- 好物推荐 | 直男の送礼指南(下周七夕,欲买从速
- Effective Java读书笔记六:方法
- 在没有安装OpenCV的电脑运行OpenCV程序
- ABAP OO的八大理由(四)
- DNN出错:The compiler failed with error code 1.
- Android之开源框架NineOldAndroids动画库
- 在微型计算机系统中,打印机一般是通过( ,2013湖南省计算机等级考试试题 二级C试题最新考试试题库...
- Eos的Wasm智能合约的局限性
- 摄氏温度和华氏温度换算(vb源码)
- 调节RStudio的代码字体大小
- [CM311-1A]-安卓设备视频分辨率 DPI 以及刷新率问题
- Visual Basic Script 程序参考手册-学习第1天:初步认识VBS,编写第一个Hello World程序,解决中文字符乱码问题,推荐参考书
- Google App Engine初探
- matplotlib绘图配色colormap问题
- 数值代数中的数学原理及其证明(一)
- 如何使用Xcode的Targets来管理开发和生产版本的构建
- 根据表达式序列(前缀、中缀、后缀)构建表达式树
- Machine Learning 简介与学习路线
- js[中英文排序-获取中文拼音]
- 张小龙回应一切!2019微信公开课一人撑到半夜,4小时演讲3万字实录
热门文章
- 第五章(3)行逻辑链接的顺序表
- Golang实现IP地址匹配
- 用certbot申请https证书
- [译] 超快速的分析器(一):优化扫描器
- storyboard(故事版)新手教程 图文详解 1.创建一个无约束的导航栏加选项卡(tabbar)故事版
- CIO圈子里的“老行家”:太平绅士赖锡璋
- python用cartopy包画地图_python – 使用Cartopy在地图上显示图像时的投影问题
- Pr零基础入门指南笔记一——项目、序列、预设
- 【芝麻背调百科】员工提交辞职信后又要求收回,公司能拒绝吗?
- android 获取build,分析,读取 android build.prop