ABasicEnemy::ABasicEnemy()
{
// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
AutoPossessAI = EAutoPossessAI::PlacedInWorldOrSpawned;
AIControllerClass = ABasicEnemyAIController::StaticClass();
DefaultSceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("DefaultSceneRoot"));
RootComponent = DefaultSceneRoot;
SkeletalMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("SkeletalMeshComponent"));
SkeletalMeshComponent->SetupAttachment(DefaultSceneRoot);
SkeletalMeshComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision);
StatusComponent = CreateDefaultSubobject<UStatusComponent>(TEXT("StatusComponent"));
MovementComponent = CreateDefaultSubobject<UCustomFloatingPawnMovement>(TEXT("MovementComponent"));
위와같은 생성자에서 RootComponent를 DefaultSceneRoot으로 설정해둔 후,
RootComponent를 런타임에 받아오는 shape component를 충돌체로 한 CollisionComponent로 변경해봤다.
문제점은 MovementComponent가 변경된 CollisionComponent를 움직이는게 아닌
기존 DefaultSceneRoot를 움직였다..
root컴퍼넌트를 변경하고 SetUpdatedComponent라는 함수를 통해 갱신시킬 수 있었다.
MovementComponent->SetUpdatedComponent(CollisionComponent);