자주쓰는거

김민오·2022년 7월 24일

BP의 딜레이 노드와 같은 효과를 주고싶을때

	FTimerHandle delay_handle;
	GetWorld()->GetTimerManager().SetTimer(delay_handle, FTimerDelegate::CreateLambda([&]()
		{
			// Write Game Logic . . . .
		}), delay, false);

오브젝트 스폰

header
class SomePawn()
{
. . . . .

UPROPERTY(EditAnywhere)
TSubclassOf<class ASpawnObject> spawn_obj;
. . . . .
}

cpp
{
. . . 
			FActorSpawnParameters spawn_params;
			spawn_params.Owner = GetOwner();
			spawn_params.Instigator = instigator;
			UWorld* world = GetWorld();
			if (world)
			{
				world->SpawnActor<ASpawnObject>(
					spawn_obj,
					Spawn Location,
					Spawn Rotator,
					spawn_params
					);
			}
 . . .
}

Dynamic Delegates 사용방법 (OnHit, Damage, Sensing . . . .)

void AMyPawn::BeginPlay()
{
. . .
	// AddDynamic 파라미터로 사용되는 함수는 unreal document를 참고하여 작성한다.	
    OnTakeAnyDamage.AddDynamic(this, &AMyPawn::Damage Function);
. . .
}

AMyPawn::AMyPawn()
{
// 생성자에서도 사용 가능
sensing_component = CreateDefaultSubobject<UPawnSensingComponent>(TEXT("SensingComponent"));
	sensing_component->OnSeePawn.AddDynamic(this, &AMyPawn::OnSeePawn);
}

other example . . 
{
		melee_hit_area->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
		melee_hit_area->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Overlap);
		melee_hit_area->OnComponentBeginOverlap.AddDynamic(this, &AMeleeWeaponBase::OverlapMeleeHitArea);

}

나이아가라 이펙트 스폰, 어태치

#include "NiagaraFunctionLibrary.h"
#include "NiagaraSystem.h"

. . . .
UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), spawn_effect_niagara, GetActorLocation(),
			GetActorRotation());
. . . .

. . . .
UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), melee_hit_effect_niagara, spawn_loc, spawn_rot);
. . . .

profile
https://github.com/gimhema, https://gimhema.tistory.com/

0개의 댓글