ue4 classuobject没有成员beginplay_UE4 C++ (2):定义物品与之互动

之前一篇C++文章中,写了使用C++创建一个背包,并且添加了一个物体可以拾取到背包中。

那么这一篇文章,我们使用枚举定义不同的物品类型,不同物品属性与角色产生不同的互动,初始化角色对象等等内容。知识的积累离不开点点滴滴的努力,望共勉之,和往常一样工程在文章最后。

在本文章中我们要实现的是,基于一个Actor,可以选择这个Actor的属性,一个属性是可拾取物体,一个属性是不可拾取只能使用的物体,然后我们拾取一个物体,将这个物体和另一个属性的物体交互(案例中使用打火机点燃稻草的功能)。

和往常一样,创建一个C++的第三人称模板,然后创建一个Actor的C++类,我们本次只需要在Input中添加一个Action就可以,那就是Pickup,这里其实还可以添加一个展示背包的按键。那代码还和之前的一样,在工程的名字(这里以ES为例)。ESCharacter.h中定义如下内容:

e5c61130c1a959e9a5258a09d7a51c06.png

然后再ESCharacter.cpp中的PlayerInputComponent函数添加如下内容:

c00c2d9a9c771fe3ef4a747796e09063.png

然后将在头文件中声明的函数写如下实现方法,和前面第一篇文章中一样,3个函数2个用来控制按下和抬起后,开关bool用来检测玩家是否按下了E,然后展示背包,这里很简单就不讲了。

dee9f89889992169a2ddefec370cd567.png

接下来我们主要操作都在Actor的Class中完成,这里我的Actor名字叫ESItem,打开ESItem.h在Public区域添加如下内容:

//用来检测当前触碰对象是否为玩家
	bool isTriggerPlayer = false;
	//用来检测当前物品是否使用过
	bool isUsed = false;
	//创建一个ESCharacter类型的空玩家变量
	AESCharacter* ESPlayer;

	//当前物品名字,公开在编辑器窗口
	UPROPERTY(EditAnywhere)
		FString itemName;

	//当前物品的模型,公开在编辑器窗口
	UPROPERTY(EditAnywhere)
	UStaticMeshComponent* itemMesh;

	//当前Actor中会包含的粒子特效,公开在编辑器窗口
	UPROPERTY(EditAnywhere)
	UParticleSystemComponent* showParticle;

	//创建一个碰撞盒子,用来检测和玩家的碰撞
	UBoxComponent* collisionBox;

	//创建2个碰撞函数
	UFUNCTION()
		void TriggerEnter(class UPrimitiveComponent* HitCopp, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

	UFUNCTION()
		void TriggerExit(class UPrim
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值