虚幻引擎UE5 GAS开发RPG游戏-02 设置英雄角色-14 设置武器类

本文介绍了在Unreal Engine中创建武器基类的过程。首先建立C++类WarriorWeaponBase继承自AActor,并在构造函数中禁用Tick。然后扩展基类功能,添加静态网格体(WeaponMesh)作为根组件和碰撞盒(WeaponCollisionBox),设置碰撞盒尺寸为20单位并初始禁用碰撞。最后通过蓝图继承该基类,设置网格体和调整碰撞箱大小完成武器创建。整个实现展示了UE中从C++基类到蓝图子类的武器系统开发流程。

1.创建C++类:

Source/Warrior/Public/Items/Weapons/WarriorWeaponBase.h:

// Copyright @ ChenChao

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "WarriorWeaponBase.generated.h"

UCLASS()
class WARRIOR_API AWarriorWeaponBase : public AActor
{
	GENERATED_BODY()
	
public:	
	
	AWarriorWeaponBase();


};

Source/Warrior/Private/Items/Weapons/WarriorWeaponBase.cpp:

// Copyright @ ChenChao


#include "Items/Weapons/WarriorWeaponBase.h"


AWarriorWeaponBase::AWarriorWeaponBase()
{
 	
	PrimaryActorTick.bCanEverTick = false;

}

2.创建基类的子类:英雄武器类:

3.在武器基类,创建一个静态网格体、碰撞箱:

Source/Warrior/Public/Items/Weapons/WarriorWeaponBase.h:

// Copyright @ ChenChao

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "WarriorWeaponBase.generated.h"

class UBoxComponent;

UCLASS()
class WARRIOR_API AWarriorWeaponBase : public AActor
{
	GENERATED_BODY()
	
public:	
	
	AWarriorWeaponBase();

protected:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category= "Weapons")
	UStaticMeshComponent* WeaponMesh;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category= "Weapons")
	UBoxComponent* WeaponCollisionBox;

public:
	FORCEINLINE UBoxComponent* GetWeaponCollisionBox() const { return WeaponCollisionBox; }
};

Source/Warrior/Private/Items/Weapons/WarriorWeaponBase.cpp:

// Copyright @ ChenChao


#include "Items/Weapons/WarriorWeaponBase.h"

#include "Components/BoxComponent.h"


AWarriorWeaponBase::AWarriorWeaponBase()
{
 	
	PrimaryActorTick.bCanEverTick = false;

	WeaponMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WeaponMesh"));
	SetRootComponent(WeaponMesh);

	WeaponCollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("WeaponCollisionBox"));
	WeaponCollisionBox -> SetupAttachment(GetRootComponent());
	WeaponCollisionBox->SetBoxExtent(FVector(20.f));	//设置武器碰撞盒(WeaponCollisionBox)的尺寸范围
	WeaponCollisionBox->SetCollisionEnabled(ECollisionEnabled::NoCollision);

	
}

4.编译,创建英雄武器的子蓝图

再基于武器蓝图,创建子蓝图类:

设置静态网格体:

调整碰撞箱大小:

完美!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值