9.子弹类型

创建Actor类

 添加相关的头文件,并声明相关组件

#include "Components/StaticMeshComponent.h"
#include "Components/CapsuleComponent.h"
#include "Components/SphereComponent.h"
#include "GameFramework/ProjectileMovementComponent.h"


	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "components")
	UStaticMeshComponent* MyMesh;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "components")
	USphereComponent *MySphere;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "components")
	UProjectileMovementComponent* MyProjectile;

 构造函数中初始化,BeginPlay中动态加载资源,为StaticMeshComponent绑定组件

AMyProjectileActor::AMyProjectileActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	MyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyMesh"));
	MySphere = CreateDefaultSubobject<USphereComponent>(TEXT("MySphere"));
	MyProjectile = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("MyProjectile"));
	
	RootComponent = MyMesh;
	MySphere->SetupAttachment(MyMesh);
	MyProjectile->SetUpdatedComponent(MyMesh);

	MyProjectile->InitialSpeed = 1200.0f;
	MyProjectile->MaxSpeed = 2400.0f;
	MyProjectile->bRotationFollowsVelocity = true;
	MyProjectile->bIsHomingProjectile = false;
	MyProjectile->ProjectileGravityScale = 1.5f;
}

void AMyProjectileActor::BeginPlay()
{
	Super::BeginPlay();
	UStaticMesh *mesh = LoadObject<UStaticMesh>(this,TEXT("/Script/Engine.StaticMesh'/Game/StarterContent/Shapes/Shape_Cone.Shape_Cone'"));
	if (!mesh) {
		GEngine->AddOnScreenDebugMessage(-1,5.0f,FColor::Red,TEXT("mesh load failed!"));
	}
	MyMesh->SetStaticMesh(mesh);
	MyMesh->SetRelativeScale3D(FVector(0.4f,0.4f,0.4f));
}

测试我们的子弹类型

 打开关卡蓝图,编写事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值