1.先把角色类改成抽象类:其他的方法不要了
Source/Crunch/Public/Character/CCharacter.h:
// Copyright@ChenChao
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "CCharacter.generated.h"
UCLASS(Abstract)
class CRUNCH_API ACCharacter : public ACharacter
{
GENERATED_BODY()
public:
ACCharacter();
protected:
virtual void BeginPlay() override;
};
Source/Crunch/Private/Character/CCharacter.cpp:
// Copyright@ChenChao
#include "Character/CCharacter.h"
// Sets default values
ACCharacter::ACCharacter()
{
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = false;
// 网格体无碰撞
GetMesh()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}
void ACCharacter::BeginPlay()
{
Super::BeginPlay();
}
2.在玩家角色里添加弹簧臂和跟随相机:
Source/Crunch/Public/Player/CPlayerCharacter.h:
// Copyright@ChenChao
#pragma once
#include "CoreMinimal.h"
#include "Character/CCharacter.h"
#include "CPlayerCharacter.generated.h"
class USpringArmComponent;
class UCameraComponent;
/**
*
*/
UCLASS()
class CRUNCH_API ACPlayerCharacter : public ACCharacter
{
GENERATED_BODY()
public:
ACPlayerCharacter();
private:
#pragma region Components
//弹簧臂组件
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
TObjectPtr<USpringArmComponent> CameraBoom;
//跟随摄像机组件
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
TObjectPtr<UCameraComponent> FollowCamera;
#pragma endregion
};
Source/Crunch/Private/Player/CPlayerCharacter.cpp:
// Copyright@ChenChao
#include "Player/CPlayerCharacter.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "GameFramework/SpringArmComponent.h"
ACPlayerCharacter::ACPlayerCharacter()
{
/*弹簧臂组件*/
CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
CameraBoom->SetupAttachment(GetRootComponent()); //设置父级(根组件)
CameraBoom->TargetArmLength = 200.f; //设置臂长
CameraBoom->SocketOffset = FVector(0.f, 55.f, 65.f); //插槽偏移
CameraBoom->bUsePawnControlRotation = true; //使用棋子控制旋转
/*相机组件*/
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName); //设置父级(弹簧臂插槽名称)
FollowCamera->bUsePawnControlRotation = false;
/*角色移动组件*/
GetCharacterMovement()->bOrientRotationToMovement = true; //保持旋转到位移方向
GetCharacterMovement()->RotationRate = FRotator(0.f, 500.f, 0.f); //旋转速度(转身速度)
GetCharacterMovement()->MaxWalkSpeed = 400.f; //最大位移速度
GetCharacterMovement()->BrakingDecelerationWalking = 200.f; //行走加速度
}
效果:

我们可以设置默认摄像机激活策略,来改变视角:


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



