1. 스폰액터 다른 방식으로 -> 스폰액터 확장편 : SpawnActorDeferred()
▶️SpawnActorDeferred()
: 액터 스폰전 속성이나 함수를 호출하여 값을 미리 세팅할 수 있게 해주는 함수.
- SpawnActorDeferred() 만 호출한다고 액터가 스폰되진 않음. 셋팅만됨.
- 인자
UClass* Class : UClass 정보
FTransform const& Transform : Transform정보 ( 위치, 회전, 크기 )
AActor* Owner = nullptr : 소유주
APawn* Instigator = nullptr : SpawnActor 되는 원인을 제공한 Pawn
ex) 스킬 발사시 스킬을 사용한 플레이어
ESpawnActorCollisionHandlingMethod CollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, : 스폰방법
ESpawnActorScaleMethod TransformScaleMethod = ESpawnActorScaleMethod::MultiplyWithRoot : 스폰시 스케일을 지정하는 Enum
⭐SpawnActorDeferred() 를 사용할 경우 데이터 셋팅 및 BeginPlay()가 언제 호출될지 조절을 할 수 있어서 좋다.
▶️UGameplayStatics::FinishSpawningActor ();
- 이걸 호출해줘야 오브젝트 생성됨
1) SpawnActorDeferred() 사용하여 몬스터 스폰
void ASpawnPoint::Respawn()
{
TObjectPtr<AMonsterBase> spawnMonster = GetWorld()->SpawnActorDeferred<AMonsterBase>
( mSpawnMonster, FTransform( GetActorRotation(), GetActorLocation()), this, nullptr, ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn );
if ( IsValid( spawnMonster ) )
{
spawnMonster->SetHP( 2, 2 );
UGameplayStatics::FinishSpawningActor( spawnMonster, FTransform( GetActorRotation(), GetActorLocation() ) );
mSpawnRemainCnt--;
}
}
2) 몬스터 hp 설정하는 함수 추가
MonsterBase.h
UFUNCTION()
void SetHP(int32 Hp, int32 Hp2);
AMonsterBase::AMonsterBase()
{
..
mHP = 0;
mHP2 = 0;
}
void AMonsterBase::SetHP( int32 Hp, int32 Hp2 )
{
mHP = Hp;
mHP2 = Hp2;
}
=> 실행하면 몬스터 스폰이 정상적으로 진행된다.
2. 몬스터 죽었을 때 다시 리스폰 기능 넣기
SpawnPoint.h
public :
UFUNCTION()
void DieMonster();
void ASpawnPoint::DieMonster()
{
if ( mSpawnRemainCnt <= 0 )
return;
mSpawnTime = 4;
}
float AMonsterBase::TakeDamage( float Damage, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser )
{
...
if ( mHP2 > 0 )
ChangeAnimMonster_Server( EAnimType::ANIMTYPE_HIT );
else
{
ChangeAnimMonster_Server( EAnimType::ANIMTYPE_DIE );
ASpawnPoint* owner = Cast<ASpawnPoint>( GetOwner());
if ( IsValid( owner ) )
owner->DieMonster();
}
return Damage;
}
=> 몬스터 죽으면 죽은 자리에서 바로 다음 몬스터가 스폰된다.
'Unreal Engine5 > KDT 2024' 카테고리의 다른 글
[UE5 KDT2024] 33. 스킬 생성 2편 (0) | 2025.03.17 |
---|---|
[UE5 KDT2024] 32. 스킬 생성 1편 (0) | 2025.03.16 |
[UE5 KDT2024] 30. SpawnActor (0) | 2025.03.14 |
[UE5 KDT2024] 29. 애님 노티파이 클래스 (0) | 2025.03.13 |
[UE5 KDT2024] 28. 몬스터 폰 데미지 적용 (0) | 2025.03.12 |
댓글