
ue学习笔记
从0开始,慢慢更.....
flyflyingway
这个作者很懒,什么都没留下…
展开
-
ue引擎游戏开发笔记(47)——设置状态机解决跳跃问题
目前当角色起跳时,只是简单的上下移动,空中仍然保持行走动作,并没有设置跳跃动作,因此,给角色设置新的跳跃动作,并优化新的动作动画。1.实现跳跃不复杂,考虑使用状态机完成动作设置,并对之前角色死亡,移动等进行优化。6.编译,运行,调试。原创 2024-05-21 22:19:41 · 610 阅读 · 0 评论 -
ue引擎游戏开发笔记(46)——简单UI设计
玩家操作界面应该有基本的准星和血量显示等内容,告知玩家角色的基本状态。1.较为简单的内容,在控件面板建立相应内容,之后链接到游戏中即可!2.先做准星,在画布上搞个准星,画或者图片,+号都行。原创 2024-05-20 21:51:10 · 311 阅读 · 0 评论 -
ue引擎游戏开发笔记(45)——添加游戏音效
截至目前,我们仍然在一个无声的世界游玩游戏,所以有必要为游戏增添一些声音,例如开火声,子弹撞击声等等。1.这是一个较为简单的功能,类似特效的实现方法,在引擎中选择需要的声音,并且去代码端声明这些变量就行。4.编译,运行,调试。原创 2024-05-19 20:47:55 · 417 阅读 · 0 评论 -
ue引擎游戏开发笔记(44)——游戏胜负显示
在击杀完最后一个敌人,或者玩家自己死亡后,游戏应该有所提示,显示一下死亡和胜利的界面。1.这个之前做过,在小车游戏中就做过结算界面,参照那个示例进行实现即可。原创 2024-05-18 23:41:42 · 264 阅读 · 0 评论 -
ue引擎游戏开发笔记(43)——行为树的建立:射击bug修复
1.首先先分析一下,因为摄像机在人身后,而设计的子弹发出点又是从摄像机前,所以应该是由于发射的“子弹”因碰撞,无法通过导致看起来像是在射击自身。实现了射击,但射击本身存在问题,ai只会射击自己,不能射击玩家(额......),修复这个bug。在角色类中,禁用控制,并把胶囊体设为无碰撞,这样它会从世界跌落,等同于消失掉。4.此时再编译运行,已不存在bug。原创 2024-05-17 20:50:42 · 227 阅读 · 0 评论 -
ue引擎游戏开发笔记(42)——行为树的建立:ai射击实现
在完成ai的基本移动和巡逻后,另一个比较重要的ai功能就是攻击,ai要能够主动攻击玩家,实现ai对玩家的主动攻击。1.思路:射击功能本身已经实现了,现在只需要完成对ai方位,视角的获取,再调用射击函数,就可以进行射击。现在的ai射击存在问题,机器人只会射击自身,并不会射击玩家,下次笔记进行修复。原创 2024-05-17 20:32:00 · 259 阅读 · 0 评论 -
ue引擎游戏开发笔记(40)——行为树的建立:丰富ai行动
敌人的ai行为随着开发的不断更新,会不断增加,如果每次都进入c中编写会很不方便,也无法凸显ue引擎中行为树的优势作用,因此有必要将敌人的ai行为,全部转到行为树中实现。1.思路:先实现已完成的部分:追踪玩家,首先要建立行为树和黑板,之后在行为树中掉用黑板中的变量来实现相关功能。7.编译,运行,调试。原创 2024-05-16 00:27:08 · 234 阅读 · 0 评论 -
ue引擎游戏开发笔记(41)——行为树的建立(2)--丰富ai行为:巡逻后返回原处
就敌人ai而言,追踪到敌人有可能丢失目标,丢失目标后应该能返回原来位置,实现这一功能。1.思路:利用clear value函数,禁用掉当前的追踪功能,执行之后的返回函数即可。5.编译,保存,调试。原创 2024-05-16 00:41:26 · 267 阅读 · 0 评论 -
ue引擎游戏开发笔记(39)——npc的ai设定:追踪玩家以及瞄准
实现对npc的击杀和死亡反馈后,下一步需要赋予npc基本的ai,首先就是敌人要能够追踪或者说跟随玩家,这才能为后续npc开枪,对射做好准备,首先实现追踪玩家。ue引擎对此提供了相对完整的可用模块,简单设置调用即可。5.编译运行,调试。原创 2024-05-14 00:23:02 · 359 阅读 · 0 评论 -
ue引擎游戏开发笔记(38)——实现敌人接收攻击伤害,并作出反应
现在已经显示造成实际伤害,但敌人对实际伤害并未产生反馈,例如还击,或者死亡倒地等等,实现敌人对于受击的反馈。1.思路:在动画蓝图中添加死亡动画,并通过bool混合两种动画,再通过bool变量控制两种动画的播放。原创 2024-05-11 21:12:37 · 282 阅读 · 0 评论 -
ue引擎游戏开发笔记(37)——实现造成伤害
1.思路:ue本身函数FPointDamageEvent就可以解决,在actor库中查看takedamage()所需要的参数,依据参数配置,或者定义,之后调用takedamage函数。在游戏中已经能够射击,并且能得到实际的落点反馈,但本质上这种射击没有任何实际数值伤害,为射击添加实际的子弹伤害数值。FPointDamageEvent需要在头文件包含#include "Engine/DamageEvents.h"2.在装备或者角色类中先写入takedamage()函数:(注意给shanghai一个初始值)原创 2024-05-11 17:48:24 · 355 阅读 · 0 评论 -
ue引擎游戏开发笔记(36)——为射击落点添加特效
1.思路:很简单,类似开枪特效一样,只要在头文件声明特效变量,在fire函数中应用这个变量即可。在debug测试中能看到子弹落点后,需要给子弹添加击中特效,更真实也更具反馈感。原创 2024-05-09 22:11:09 · 369 阅读 · 0 评论 -
ue引擎游戏开发笔记(35)——为射击添加轨道,并显示落点
1.思路:可以这样理解,每次射击的过程是一次由摄像机向外抛出物体的过程,那么首先要获取到当前世界中摄像机的具体位置,即旋转,空间位置;获取到当前摄像机的位置后建立弹道,并利用debug检测一下落点即可。我们只添加了开枪特效,事实上并没有实际的效果产生例如弹痕,落点等等。所以逐步实现射击的完整化,先从实现落点开始。为避免空指针,获取摄像机前应当检测是否为空指针。原创 2024-05-08 23:05:47 · 426 阅读 · 0 评论 -
ue引擎游戏开发笔记(34)——建立射击映射,并添加特效
准备处理射击系统,首先角色需要能射击,有反馈,先建立角色与控制器之间的映射,并添加简单特效,证明映射已经建立。SpawnEmitterAttached来自UGameplayStatics,因此要包含这个类,具体为。2.写一下所用函数fire,是从Gun中调用的,所以去Gun中写:利用spawn函数实现调用特效。原创 2024-05-07 23:33:01 · 246 阅读 · 0 评论 -
ue引擎游戏开发笔记(33)——武器与角色的匹配,将新武器装备到角色身上
武器能出现在世界中,完成了第一步,下一步需要角色和武器适配,即不论角色跑动,射击等,武器和角色都相匹配,将武器装备到角色身上。即需要找到武器与角色的结合点(weapon_r),通过隐藏这一骨骼点来隐藏武器。3.回到引擎,编译运行。原创 2024-05-06 22:34:25 · 525 阅读 · 0 评论 -
ue引擎游戏开发笔记(32)——为游戏添加新武器装备
游戏中角色不会只有一种武器,不同武器需要不同模型,甚至可能需要角色持握武器的不同位置,因此需要添加专门的武器类,方便武器后续更新,建立一个武器类。注意如果运行游戏看不到新武器,可以按f8在右侧搜索武器名,双击找到武器位置。原创 2024-05-06 22:21:43 · 911 阅读 · 0 评论 -
ue引擎游戏开发笔记(31)——对角色移动进行优化:角色滑步处理
1.思路:进入混合空间蓝图,找一条腿做参考计算这只脚从落脚到抬脚相对世界的位移,用位移除以时间计算出相对准确的跑动速度,对步行做相同处理,对两速度取最小公倍数并取整,调整混合空间中最大速度即可。这个问题本质是角色的运动速度并没有匹配世界动画的运行速度,不论世界动画快慢于角色移动速度,都会感到有滑步感。角色的移动与动画不匹配,角色移动起来像是在滑行。4.编译运行看效果进行微调。原创 2024-05-05 23:18:23 · 758 阅读 · 0 评论 -
ue引擎游戏开发笔记(30)——对角色移动进行优化:实现人物转向
1思路:利用反转换函数inverse transform direction获取正确向量,并通过XVector函数分离出z轴方向,后匹配角度实现移动转向。当前我们只实现了通过控制器可使角色进行前后左右的移动,但角色移动时与动画不匹配,并不会进行转向,实现角色随移动转向。4.编译,保存,运行。原创 2024-05-05 23:02:18 · 586 阅读 · 0 评论 -
ue引擎游戏开发笔记(29)——实现第三人称角色随手柄力度进行移动
角色可以随手柄力量大小进行走路和跑步,不动时保持角色停顿。1.思路:通过动画蓝图和动画混合实现角色移动和输入的联系。5.回到角色蓝图,设定动画类为自己所建立的新动画类,编译并运行。原创 2024-05-03 23:56:29 · 442 阅读 · 0 评论 -
ue引擎游戏开发笔记(28)——实现第三人称越肩视角
1.思路:建立一个弹簧臂和摄像机,调整两者位置达到越肩效果。所有旋转长短,只调整弹簧臂,不要调整相机。实现一个第三人称越肩视角。4.编译保存,进行微调。原创 2024-05-02 23:40:10 · 564 阅读 · 2 评论 -
ue引擎游戏开发笔记(27)——解决角色移动及转动存在卡顿掉帧小技巧
建议对rotationrate声明时直接赋一个默认值,否则编译完后,引擎初始化为0,这样无论怎么转动都看不到效果。1.思路:采取捕获最后deltaseconds来逐帧进行旋转或移动,使动作显得不那么卡顿。随之游戏越来越大,难免出现部分时候移动出现卡顿,能否进行一定优化。5.编译,调整细节。原创 2024-05-02 23:30:41 · 832 阅读 · 1 评论 -
ue引擎游戏开发笔记(26)——处理角色死亡敌人仍攻击bug
1.首先分析问题起因,是由于虽然玩家控制的小车被摧毁了,但控制器仍然存在,没有被禁用掉,直接禁用掉控制器可行,当然玩家死亡,显示game over后立即重新开始也是完全可行的。对游戏中存在的各种小问题做细节处理,例如玩家在死亡后,敌人仍对着目标开炮,并且仍然触发爆炸效果。5.此时再编译代码,玩家死亡后敌人不会再继续攻击了。原创 2024-04-30 14:44:14 · 1232 阅读 · 1 评论 -
ue引擎游戏开发笔记(25)——增添特效
为了让游戏更真实,需要给游戏增添一些特效,例如敌人被摧毁时出现一个爆炸特效,子弹发射时有尾烟等等。1.与声音类似,首先也需要在需要的地方先建立声明,以便能在引擎中进行设置,3.ok,现在编译代码,之后在引擎中设置各种特效即可。原创 2024-04-30 14:29:23 · 271 阅读 · 0 评论 -
ue引擎游戏开发笔记(24)——增添声音
2.当然可以立即编译后,在引擎中找到要设置的声音直接替换,但因为发声函数并没有完成编写,也可以等到函数设置完成后,一并编译,那么开始实现发声,要利用playsoundatlocation函数;常规问题,角色死亡或者开炮时应当伴随有声音,这样有戏才显得更真实,所以为游戏添加合适的声音。每次调用声音前应当加个判断,检测是否指向了空指针,避免游戏崩溃。原创 2024-04-30 14:15:34 · 300 阅读 · 0 评论 -
ue引擎游戏开发笔记(23)——增添小控件显示倒计时
2.现在只是完成了代码侧的构建,如果现在编译完文件并运行游戏,在开始时确实会有3秒玩家无法移动小车,但屏幕上并不会有任何提示,因此下一步,将提示内容显示在屏幕上,利用引擎中widget即控件来实现屏幕输出,首先新建一个widget,选择文本输入(当然制作好图片导入也可)开始设计器建立的文字只是一种样式,具体显示内容与后续蓝图内的输出有关,同时,如果希望每一次输出样式都不同那么就需要建立多个控件。当游戏开始时,需要给玩家一定提示,诸如准备,3.2.1,开始!将这些内容输出到屏幕上,以便玩家能够清晰看到。原创 2024-04-30 13:59:23 · 260 阅读 · 0 评论 -
ue引擎游戏开发笔记(22)——处理开炮后子弹击中目标变化(2)
1.首先要创建一个游戏模式,在引擎中新建游戏模式,并对游戏模式进行编辑,你可能需要获取整个地图有多少敌人,判断游戏结束时是玩家死亡还是敌人被消灭,依照需求将需要的函数在头文件中声明。有了基本的炮弹反馈,即用子弹击中目标多次后,目标会消失后,需要给游戏增添胜负条件,例如击毁所有炮塔则游戏胜利,玩家被击毁则游戏失败。3.判断角色死亡,如果是玩家死亡,那么游戏直接结束,如果是炮塔死亡,则炮塔减一,直至炮塔为0,游戏胜利。原创 2024-04-30 13:30:00 · 207 阅读 · 0 评论 -
ue引擎游戏开发笔记(21)——处理开炮后子弹击中目标变化(1)
我们只是单纯使子弹能够发射出去,出去后子弹并不消失,同时击中目标也么没有反馈,诸如血量减少,敌人爆炸等等,先做些简单处理,例如让子弹消失,打几炮后敌人死亡消失等。此时并未完成游戏角色死亡的整体流程,只是完成了对炮塔的摧毁,后续仍需建立游戏模式,用于判断是玩家死亡还是敌人死亡,以便输出胜利,或者gameover。1.首先设定击中函数,这个函数将处理子弹击中敌人后的各种细节,当然,首先会判断子弹是否与目标发生碰撞,之后逐渐添加各种特效声音等等。原创 2024-04-30 12:46:36 · 189 阅读 · 0 评论 -
ue引擎游戏开发笔记(20)——实现炮塔旋转及开炮
1.首先,射击不止玩家控制的小车能够进行,对方小车或者炮塔也应该能够进行射击,因此考虑建一个类用来存储子弹,这样任何车都可以进行调用。所以先构建基类zidan。炮塔实现旋转后,接下来要实现相对重要的功能,即小车能够向外根据旋转方向发射子弹,因此实现射击的功能。3.在cpp中实现函数,首先获取子弹的位置与旋转,之后调用SpawnActor函数将子弹“扔”出去。注意子弹发出的位置,尽量靠前,否则子弹会与炮管发生碰撞导致不会射出去。4.回到引擎,为子弹选择好模型,建立映射,完成射击。原创 2024-04-30 00:05:48 · 401 阅读 · 0 评论 -
ue引擎游戏开发笔记(19)——实现炮塔旋转(1)
1.同样类似已经实现过的的抓取,主要思路即建立一条线状通道,捕捉鼠标轨迹再通过rotation函数实现旋转。由于小车的类是继承自基本车类,因此调用函数不需要再包括它,但如果来自其他库或者类,则需要在头中声明。小车由基本移动后,还应有最重要的功能,能战斗!因此第一步让小车炮塔旋转起来,便于后续进行开炮。原创 2024-04-29 00:42:27 · 265 阅读 · 0 评论 -
ue引擎游戏开发笔记(18)——在c++中实现物体移动转弯(2)
测试移动时,小车无法移动,可能是由于小车的胶囊体与地面接触导致碰撞从而导致无法移动,此时适当抬高小车使其胶囊体脱离地面即可。2.编写turn函数,并注意只允许玩家绕z轴进行方向改变即调用Yew,1.同样,通过bindaxi。继续实现物体转弯功能。原创 2024-04-27 23:19:21 · 265 阅读 · 1 评论 -
ue引擎游戏开发笔记(17)——在c++中实现物体移动转弯(1)
车体模型建立完成后,首先即需要实现能对车体进行移动,转弯等基本操作,这样才能完成诸如后续开火,转动机枪等操作。执行映射,以及获取Deltatime时注意包含必要的头文件,否则会报错。2.在头文件声明需要的变量,诸如速度,旋转速度等等。1.首先基于车的基类建立玩家驾驶的车以及敌人的车。原创 2024-04-26 23:53:19 · 418 阅读 · 1 评论 -
ue引擎游戏开发笔记(16)——在c++中实现静态物体组合构建
1.首先考虑车有很多种,可能不同车拥有不同功能,但基本功能相同,因此构建一个基类,在此基础上实现各种车的特化。如果编译出现UCapsuleComponent未声明等类似错误,在前添加class前置声明即可。准备构建一个简单的小车闯关游戏,利用代码实现车体,车顶,机枪的组合构建。4.完成编译,在ue5中对组件增添材质。原创 2024-04-26 00:54:41 · 310 阅读 · 1 评论 -
ue引擎游戏开发笔记(15)——建立触发器(2)
触发系统仍需完善,实现例如回收触发物品,使之与触发装置一同消失的功能,或者替换物品,以达到“偷取”某种物品的效果。有时物体未响应触发器的反应,可能并不是代码本身的问题,也可能由于场景搭建导致物体“卡住”了,注意检查。原创 2024-04-25 00:38:19 · 279 阅读 · 0 评论 -
ue引擎游戏开发笔记(14)——建立触发器(1)
现在已经实现物体的移动,以及物体的抓取,那么在游玩关卡时,需要玩家将某一物体放到指定位置,从而触发某一装置,诸如门的打开,物体爆炸,怪物出现等等。因此需要设计一个触发器,当指定物体放置时,触发。3.写主要功能函数,建立关联移动,先判断标签是否一致,如果一致,再判断物体是否仍被“抓住”,如果没有,则执行相关函数如跟随移动,引爆物体等等。2.给指定物体添加标签,同时在触发器也添加标签,只有二者匹配,才能够触发函数。注意对物体生成重叠事件,在头文件中也要包括需要调用函数的头文件。原创 2024-04-23 23:53:13 · 344 阅读 · 0 评论 -
ue引擎游戏开发笔记(13)——用C++实现物体抓取(2)
注意指针指向不能为空,要在引擎中建立对抓取的映射,例如左键单击,空格等。1.首先进行判断,是否存在抓手,并且抓手上是否存在抓取的物体。3.如果目标不可抓取,或抓手不可用,在日志中返回结果。实现抓取之后,要能够释放物体,实现对抓取物体的释放。2.如果均符合,那么通过抓手释放抓取的物体。原创 2024-04-22 23:07:26 · 261 阅读 · 0 评论 -
ue引擎游戏开发笔记(12)——用C++实现物体抓取(1)
(2)在摄像机前提供一条射线或者柱状线,以便可扫描到要抓取的物体,参考DrawDebugLine函数,及相关DrawDebugSphere函数等,获取到线后利用Engine/World库中SweepSingleByChannel()函数,实现对物体扫描的标记。要注意的细节较多,包括物体与玩家之间的碰撞处理(勾选重叠),未扫描到物体要返回结果,初始位置的获取等,多调试或者参照其他已实现样本进行修改。(1)实现镜头跟随视角转动,保持一致,为后续扫描提供基础。原创 2024-04-19 00:58:10 · 277 阅读 · 0 评论 -
ue引擎游戏开发笔记(11)——制作关卡交互设施(1)——移动门
2.主要利用VInterpConstantTo()函数,配齐函数需要的参数,包括初始位置,目标位置,移动距离等等,具体代码如下。1.本质是做一个函数模块,可以对任何物体调用这一·模块,使之实现移动功能,所以需要创建一个移动类,在类下编写移动函数。在玩家进入关卡后,可通过解密打开某些装置,例如开门,设置一个能上下左右前后移动的门。一些固定参数可写入头文件,类生成可能会因.net版本问题无法执行,注意更新。3.进引擎进行编译与调试。原创 2024-04-17 23:51:04 · 199 阅读 · 0 评论 -
ue引擎游戏开发笔记(10)——简单灯光构建(2)
导入蓝图模型,或者自己直接加入光源,调整光源的各项参数,使地牢整体看着舒服,富有美感,这其实是细腻的活儿,加入的模型,元素越多,整体的氛围感就会越强,自己简单搭了搭,先做出主体流程,之后再慢慢修缮细节。外部阳光构建完成后,给地牢内部加入各种灯光,提升氛围。原创 2024-04-13 23:20:38 · 237 阅读 · 0 评论 -
ue引擎游戏开发笔记(9)——简单灯光构建
1.关卡搭建基本完成后,开始考虑给地牢内部添加灯光,即各种火焰效果,大致有两个问题需要解决:第一个,添加阳光,也就是大环境灯光。第二个,确保地牢内部绝对黑暗,便于火光,各种光线的效果呈现。2.相对麻烦的,即保证地牢绝对黑暗,这个主要是遮挡光线照入,类似在原有的基础上再完全包裹一层,没什么难度,但比较枯燥并费时。大致完成效果(加了点光源)1.大环境光相对容易实现,添加sky light并配置天空球,再加一个照射光,调好角度,重置即可。搭建好的模块尽量放入一个文件夹,便于后续管理,也方便修改。原创 2024-04-13 00:12:20 · 279 阅读 · 0 评论 -
ue引擎游戏开发笔记(4)——建立重载,反复游玩
炮弹耗尽后无法继续游玩,建立一个重新加载系统,炮弹耗尽后直接重新开始游戏。1.通过get level和open level函数实现重载。2.加入delay函数实时输出准备重载信息。原创 2024-04-07 22:57:22 · 390 阅读 · 0 评论