UE4 C++学习笔记之使用弹簧臂组件

任务:将摄像头绑定在弹簧臂上以获得更平滑的摄像机视角(另在Creature.cpp中设置球形根结点和默认静态网格体)

Creature.h新增代码如下:

public:
        
        //新增球形组件
        UPROPERTY(EditAnyWhere)
	class USphereComponent* SphereComponent;

        //新增弹簧臂组件
        UPROPERTY(EditAnywhere)
	class USpringArmComponent* SpringArm;

Creature.cpp关键代码如下:

ACreature::ACreature()
{
       
        ……

        //初始化球形网格体,并将其设置为根组件
	SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent"));
	RootComponent = SphereComponent;
	SphereComponent->InitSphereRadius(100.f);
	SphereComponent->SetCollisionProfileName(TEXT("Pawn"));

        //初始化静态网格体,并将静态网格体的默认值设置为SphereAsset
	StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
	StaticMesh->SetupAttachment(RootComponent);
	static ConstructorHelpers::FObjectFinder<UStaticMesh>SphereAsset(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'"));
	if (SphereAsset.Succeeded())
	{
		StaticMesh->SetStaticMesh(SphereAsset.Object);
		StaticMesh->SetRelativeLocation(FVector(0));		
	}

        //初始化弹簧臂网格体,将其附着在根组件上,并设置默认的臂长,延迟系数等参数
	SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
	SpringArm->SetRelativeRotation(FRotator(-45.f, 0, 0));
	SpringArm->SetupAttachment(RootComponent);
	SpringArm->TargetArmLength = 800.f;
	SpringArm->CameraLagSpeed = 3.f;
	SpringArm->bEnableCameraLag = true;

        //初始化摄像机组件,并将其附着在弹簧臂上
	Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("CameraComponent"));
	Camera->SetupAttachment(SpringArm);
    
        ……

}

猜你喜欢

转载自blog.csdn.net/weixin_44928892/article/details/107960569