1.创建一个Actor的c++类
2.创建武器WeaponBase的子类,给玩家的武器
3.进入WeaponBase,只留下构造函数,并且将bCanEventTick改为false,增加组件。
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "WeaponBase.generated.h"
class UBoxComponent;
UCLASS()
class ARPG_GRIVITY_API AWeaponBase : public AActor
{
GENERATED_BODY()
public:
AWeaponBase();
UBoxComponent* GetWeaponCollisionBox() const { return WeaponCollisionBox; }
protected:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon")
UStaticMeshComponent* WeaponMesh;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon")
UBoxComponent* WeaponCollisionBox;
};
#include "Items/Weapon/WeaponBase.h"
#include "Components/BoxComponent.h"
AWeaponBase::AWeaponBase()
{
PrimaryActorTick.bCanEverTick = true;
WeaponMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WeaponMesh"));
SetRootComponent(WeaponMesh);
WeaponCollisionBox = CreateDefaultSubobject<UBoxComponent>(TEXT("WeaponCollisionBox"));
WeaponCollisionBox->SetupAttachment(GetRootComponent());
WeaponCollisionBox->SetBoxExtent(FVector(20.f));
WeaponCollisionBox->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}
4.启动项目,创建XMBWeapon的蓝图类,命名为BP_WeaponBase,再创建这个蓝图类的子类,命名为BP_PlayerWeapon,用于玩家的武器