ue4 4.24启动无响应_UE4 C++ (1):创建背包模块

本文是一篇关于使用UE4 C++创建拾取道具并记录在背包中的教程。作者通过讲解如何处理角色的按键事件、创建Actor类及碰撞检测,详细阐述了实现背包系统的步骤。教程涵盖了角色的拾取、展示背包的逻辑,以及如何将拾取的道具添加到背包数组中,并在屏幕上显示拾取信息。
摘要由CSDN通过智能技术生成

所以说UE大法好,博主开始陆陆续续更新一些C++方面的教程,一来巩固下知识二来走过的一些坑可以分享给开发者,之所以没出整套教程是因为觉得做一套太过于复杂而且不灵活,像博主之前做的蓝图教程,都是一个一个游戏模块抽出来讲,所以这次C++也一样,理解了每个独立模块的用法和之间的相互关系,剩下的其实就是靠自己拼接起一个完整的工程了。如果这一系列模块教程有不对的地方望大佬指出,共勉之。

代码在文章最后面,工程使用UE4.18初次启动需要编译一次。

今天带来的C++教程是使用FPS或者第三人称模板,反正总之就是有Player的啦,来做一个拾取道具并且记录在背包中。

那么总体思路是场景中有很多个Item,每个Item都是一个Actor类型,因为是一个独立的道具嘛,这些Item都有着自己的名字,还有Mesh,最主要的,还有一个Collision。

当我们角色靠近Item时,触碰Collision,Collision检测如果是玩家的话,那么允许玩家拾取,此时按下E键,则将当前Item拾取,然后通过B键来打开背包。

首先打开UE4.18,创建一个第三人称或者第一人称的C++项目,这里用第一人称举例,创建好以后,UE会自动帮我们打开VS,博主这里使用的是VS2017。

工程的名字博主是叫ESFPS,所以对应的各种文件也都是ESFPS开头的。

我们看到源代码文件如下:

21136d4ec345fd017045f2666058c18d.png

现在我们先放着不管他,在UE4的C++Classes中,新建一个C++类,类型为Actor,名字可以叫Item或者PickupObj什么的都可以,这里我叫做ESItem,ES就是我的2个英文字母缩写嘛:

20b6f094fd9f5e82d049c3fd737b213d.png

现在看到VS中已经更新了2个文件,分别是ESItem.cpp、ESItem.h,这个类我们等下用来作为可拾取物体的承载体。

现在我们返回UE4,在ProjectSettings->Input中,添加2个Action,一个用来作为拾取对象的按键响应,一个用来作为展示背包的按键响应:

4439fc3980ac34217b4fe17033749a81.png

进行到此,我们接下来的所有操作都在VS中编写代码完成。

首先我们来编写角色的操作逻辑,也就是说角色的2个按键事件,一个用来拾取,一个用来展示背包。

打开ESFPSCharacter.h头文件,在Public公开属性区域创建一个变量3个函数,如下所示:

24c154abcdfbf26a6d5e5d88e4d346f2.png

打开ESFPSCharacter.cpp文件,找到关于SetupPlayerInputComponent字样的函数,添加3行代码:

617c78c12bcaa58c1bdc17896d370629.png

来逐一分析一下这个代码的意思,因为都差不多,所以拿一行来做解释,首先PlayerInputComponent是一个指向UInputComponent类的指针,UInputComponent来自InputComponent.h,如果我们需要查看里面的成员可以转到它的定义,紧接着BindAction是一个访问PlayerInputComponent,其实也是来自UInputComponent中的成员提取,BindAction可以让我们和项目设置中的Input对应Action绑定,BindAction方法可以看InputComponent.h中的定义&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值