本文介绍了在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.编译,创建英雄武器的子蓝图

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


设置静态网格体:

调整碰撞箱大小:

完美!
1296

被折叠的 条评论
为什么被折叠?



