![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UE5.1.1_C++
文章平均质量分 59
楚江_wog1st
这个作者很懒,什么都没留下…
展开
-
UE5.1.1 C++从0开始(18.游戏标签)
再或者我们与NPC的交互中也可以使用标签,比如我们的装备可能会有标签赋予给我们,然后NPC可以对不同的标签作出不同的反应(有点像塞尔达那种)最后的一点时间教程在说给我们的AI增加一个伤害显示和血条位置的调整,我觉得这个东西应该不需要再复述了,这个东西在老早之前的教程内就教过了,就是我们的几个黄色的正方体,做受到伤害就闪一下的那一节课。子弹原路返回的功能我没有写在普通魔法子弹的类里面,而是写在魔法子弹的基类里面,不过在子类和基类里面写其实大差不差,只不过在基类里面写,所有的子类子弹都能被反弹罢了。原创 2023-07-06 00:04:26 · 630 阅读 · 0 评论 -
UE5.1.1 C++从0开始(17.GAS游戏能力系统)
包括后面的求Rotation的方法,我是直接进行一个减法,在我的概念内,Rotation实际上是一个方向,也就是一个向量,而向量的长短对我来说是无所谓的东西。同时如果以后我们想要往里面增加更多的魔法子弹相关技能的话,都可以通过这个MagicProjectile去创建,不用像我们以前那样一个函数写很多遍了(其实也可以只写一遍,在我们已经写好的函数内增加一个魔法子弹类,然后按生成参数的方法去生成我们的魔法子弹,但是所有代码都加到SCharacter类内,会让我们的代码显得太过于冗长,对我们的后期维护不友好)。原创 2023-07-05 14:02:38 · 653 阅读 · 0 评论 -
UE5.1.1 C++从0开始(16.作业5思路分享)
这个类在这里的作用单纯是存储我们的Credit用的,然后提供get set方法而已。仿照之前写的那个机器人生成的方法,同时我们把生成的函数直接插入到我们timer结束就会执行的那个函数里头(这是个偷懒的方法),有点投机取巧不过很方便。这一串代码其实就是我在之前的血瓶的代码的基础上抽象加上一点优化得到的代码,能适应大部分的情况,不过少数的子类仍然需要重写大量的父类函数。整个分数系统和我们的血量其实差不多,无非就是增加减少,检查剩余的分数够不够我们用来和血药交互的。我们用相同的方法来做。原创 2023-07-03 21:04:21 · 363 阅读 · 0 评论 -
UE5.1.1 C++从0开始(15.作业4个人作业分享)
好吧这个作业应该是之前写的,但是我发现我没写,后面我又回去自己写了一遍再看代码,感觉上大差不差,各位可以看着我的和老师的还有自己的对比下。EQS的设置看教程的来,我还没研究透,研究透了单独写一个EQS的文章,把里头的随机点如何得分详实地写出来。教程链接:https://www.bilibili.com/video/BV1nU4y1X7iQ。原创 2023-06-28 19:06:51 · 598 阅读 · 0 评论 -
UE5.1.1 c++从0开始(14.用C++写UMG类)
还有一点是,我们需要把所有关于UI的设置都放到AddToViewPort()函数调用之前,否则会出现蓝图的报错说相关参数为空的情况。最后是我们接触的控制台,也不是什么太大的问题,只不过是宏内的参数变化了而已,以前我们在UFUNCTION()的括号内填的都是蓝图可调用,默认读写啥的,如果需要把这个函数放在控制台内让我们调用,只需要在在括号内写Exec就行了,然后在相应的.cpp文件里面实现函数,最后在编辑器里面就可以调用我们所写的函数方法了。这一段的教程不难,唯一新建的C++类是UMG的一个类。原创 2023-06-27 18:15:29 · 961 阅读 · 0 评论 -
UE5.1.1 C++从0开始(13.AI玩家的进一步改进)
这个是AI这一章节的最后一个部分了,说句实话,我当时看AI的这个部分的时候人有点懵,因为毕竟不是我们传统意义上的玩家输入游戏内的人物作出回应的模式了,行为树的概念,每个节点的意义我如今也还在慢慢摸索,看别的游戏的敌人AI,只会感叹,感叹这个AI做的有多么的好,这些是我还是玩家的时候从未想过的问题。这里就可以看到我们写组件的好处了,如今有了两个不同的类在使用一段相同的代码,如果以后需要维护也只需要更改Attribute类里面的东西就可以了,而不需要两个类往返跑。复用的时候不需要重复写过多的函数。原创 2023-06-26 16:45:38 · 204 阅读 · 0 评论 -
UE5.1.1C++从0开始(12.EQS)
首先是行为树的自定义任务,SBTTask,此处的自定义task作用是发射子弹,与我们之前写的ASCharacter.cpp内的那部分代码很相似。C++的内容就这么多,可能涉及到AI的,除了自定义的内容,其它的都可以在蓝图里面实现吧,包括我们的自定义的任务节点也是在蓝图内调用实现的。Selector:从左到右的子项中,一旦有一个子项可以执行,那么执行完这个子项之后就直接返回,就算后面的子项能执行,也不执行了。Sequence:从左到右的子项中,如果有一个执行不了,直接返回,就不继续执行下面的子项了。原创 2023-06-04 17:13:38 · 653 阅读 · 0 评论 -
UE5.1.1C++从0开始(11.AI与行为树)
剩余的蓝图的内容以及创建对象绑定动画,创建C++的蓝图类啥的我就不在这里赘述了,教程讲的非常明确。再之后就是行为树的服务函数了,从UBTServices这个基类派生出来,说白了就是在蓝图编辑器里头写行为树的时候,你右键找‘服务’那一项下面可以找到我们自定义的服务函数。然后是SAIController,我看完这一章后对这个controller的理解就是:用来运行我们所选择的行为树,同时给我们的黑板上的变量赋一个初值。这个对象类把输入给删除了,因为电脑对象不需要我们的输入以及输入事件绑定啥的。原创 2023-05-26 09:27:28 · 644 阅读 · 0 评论 -
UE5.1.1C++从0开始(10.作业三)
3.增加一个health max的变量,把widget里头的health节点更换为health max节点,同时给health设置一个上下限,上限是health max , 下限是0。5.新建一个生命药水,可以恢复生命值,回复一次之后,10秒内不能再次使用,10秒后可再次使用。4.给我们刚创建出的显示伤害的widget设置一个动画,在受击的时候播放出来,同时伤害的显示不能写死,用变量来表示。至于动画怎么播放,看各位的设计了,这里是千人千面的。2.给玩家增加受击的闪亮的效果,和立方体相同的那种。原创 2023-05-24 21:20:32 · 874 阅读 · 0 评论 -
UE5.1.1C++从0开始(9.游戏材质相关)
不过我有个疑问,用老师的这个方法,在刚进入游戏的时候我们的cube就会闪一下,这明显是一个bug,我在蓝图内尝试靠更改TimeToHit的值来解决这个问题,也就是在我们的自定义材质函数内修改值来解决bug,问题也解决了。这一个章节蓝图占大多数,毕竟是材质相关的内容,用蓝图确实会比C++方便不少,这一块唯一一个C++的内容就是新写的一个cube的类。原创 2023-05-18 20:48:09 · 151 阅读 · 0 评论 -
UE5.1.1C++从0开始(8.增加血条变化,血量文本变化以及爆炸桶影响血量)
所以,我额外增加了一个SphereComp,我的思路是,玩家在爆炸桶的一定范围内,当爆炸桶发生爆炸的时候,玩家才会扣血,所以我用到了SphereComp的OnComponentBeginOverlap()事件,然后自己写了个OnComponentBeginOverlap()的函数,将其绑定到开始重叠的事件后。主要逻辑是相同的,只不过老师是用蓝图实现的,我们这个文档叫C++系列嘛,所以我用C++写了一遍,最后效果是相同的,给各位做参考。这之后就是在用户界面的蓝图编辑器内去写一些基本逻辑。原创 2023-05-17 22:55:46 · 219 阅读 · 0 评论 -
UE5.1.1C++从0开始(7.增加人物血量属性)
接下来就是一个让我感觉很坑爹的地方,老师那里的扣血功能的实现,他只是在他做的一个单一的类中,而我们的代码是自己写了一个父类和多个子类的,那么我们的增加的新功能要放到哪里呢?需要注意的点还是用中文打了注释,自己看,看不明白问我。说句实话这一节有点坑,教程上老师的那个项目其实是没有向我写的这些代码一样,做一个父类,然后写三个子类的子弹的,所以老师的代码只需要更改一点点东西就好,而我们的代码可能需要考虑的东西就比较多。我这里加上了点个人的思考,然后翻译成了中文放出来,看不懂的可以参考我的这个翻译版本。原创 2023-05-16 22:52:10 · 469 阅读 · 0 评论 -
UE5.1.1C++从0开始(6.两个额外的魔法弹:瞬移魔法弹和黑洞魔法弹)
后面的黑洞魔法弹的实现功能,我遇到了点问题,我最开始的思路是在子弹上面增加一个径向力组件,然后每帧都fire Impulse一次,但是实际上的表现非常糟糕,于是我去ue官方的文档去查是否有什么函数能持续给模拟物理的组件施加一个持续的力的函数(提一嘴,UE的中文区的文档写的非常糟糕,一直都是这样,不知道中文区的人们每天在忙什么。b站的官号有些视频是比较好的,查东西的优先级我是:b站>CSDN>UE文档,不过这个教程的纯代码的分享我没在CSDN上面看到,有一个哥们写了这个功能,但是他没放代码。原创 2023-05-15 16:05:41 · 606 阅读 · 0 评论 -
UE5.1.1C++从0开始(5.魔法子弹的落点问题)
换句话说就是,将我们的子弹的方向从与我们视角方向一直更变为朝向准心所指的方向。如图所示,红色是从摄像机出发,沿着我们的视觉中心的一个碰撞检测,而绿色的线是我们子弹的移动路线,每次摁下鼠标左键的时候,进行一次碰撞检测,如果检测到了碰撞,那么就将碰撞点设为我们子弹的落点,而我们子弹的起点照旧不需要改变,这样一来,子弹的rotation就确定了。这篇文章先解决第一个作业:魔法子弹的落点问题,各位看教程估计也看到了,游戏内人物发射的子弹朝向虽然是和我们的视角朝向相同,但是它的落点并不是我们视角最终落在的地方。原创 2023-05-11 20:58:41 · 233 阅读 · 0 评论 -
UE5.1.1C++从0开始(4.虚幻的接口以及交互功能)
很困难的,所以把这些功能分开,有助于我们后期维护代码。注:我们不需要在SGamePlayInterface.cpp文件中对我们的函数进行实现,实现是别的继承接口的类的工作,而不是我们接口类的工作,接口类的工作就是定义函数,说白了就是.cpp文件你不用动,在.h文件里面写了东西,就行了。这一个章节对于第一次接触虚幻的人来说可以说是最绕的一个点,因为老师突然给你塞了很多的概念,对于这一块的学习,我个人的推荐是:先把蓝图搞明白了,再对应到C++的代码中,不然一定会被整的晕头转向。还是,有不懂的点就来问我。原创 2023-05-07 18:44:13 · 1432 阅读 · 0 评论 -
UE5.1.1版本第三人称模板Character C++文件分析
注意:其中有部分组件在当前.h文件与.cpp文件中未定义,原因是因为其父类定义了相应的组件,子类继承父类自然就有了这些东西,想找到更详细的组件定义的话就去character类和pawn类甚至是object类里面找。原创 2023-05-02 21:34:25 · 708 阅读 · 0 评论 -
UE5.1.1C++从0开始(3.发射魔法弹以及爆炸桶效果)
随后老师给了一个作业,完成人物的跳跃以及爆炸桶的功能。跳跃功能我们在前面的时候就已经实现了(参照官方的第三人称代码实现的)所以我这里就实现爆炸桶的功能。按照那个老师的说法,是为了系统的可拓展性,所以这里不会写死,而是写一个模板子类,而我们攻击的时候就生成这个类的对象。这里最大的问题说实话是将函数绑定到组件的事件上面,我们蓝图内直接连线,而C++需要一个委托才能绑定到我们的自定义函数,但是这个委托其实是一个标准流程,我们用蓝图自己整习惯了。对魔法弹的设置较为简单,只是在初始化的时候对几个属性进行赋值罢了。原创 2023-05-05 17:00:58 · 763 阅读 · 1 评论 -
UE5.1.1 C++从0开始(2.摄像机转向)
还是摄像机绑定的那个弹簧臂?官方的示例代码写的很明白,对于玩家控制的到底是哪个组件?官方的代码都写清楚了,斯坦福的教程更多的是一步一步的引导,我个人倒是感觉一次性讲明白会更方便,就没有考虑斯坦福教程的代码,而是看一遍网课理解思路是怎么一步一步的到最终和官方示例代码差不多的那个感觉的。我唯一有点疑惑的是,官方的实例文档中,JUMP功能的绑定最后的绑定函数的类引用,为什么是ACharacter,而不是我们创建的这个类呢?我尝试了下用我们自己的类去调用这个函数,其实是能够调用到父类的函数的,也许是性能问题?原创 2023-05-04 21:54:43 · 439 阅读 · 0 评论 -
UE5.1.1 C++ 从0开始 (1.人物移动)
开个天坑,UE5.1.1的移动代码做了一个大更新,对于我这种万年蓝图然后正在转C++的人来说可以说是个挑战也可以说是个更方便我去工作的一个点。我们的空项目内的Build.cs文件内是不会有EnhancedInput这个插件包的声明的,我们需要在AddRange函数后面加上这个包的包名。我在B站上面看到没人写,也没有人讲这个东西,所以干脆自己从官方的第三人称游戏入手,先看看官方的代码是怎么写的以及是怎么设置的。官方的代码我这里就不重复输入了,我的博客里面有用中文注释写过一个我对于官方代码的理解,链接在这里。原创 2023-05-04 15:30:11 · 1433 阅读 · 0 评论