본문 바로가기

언리얼/기능, 팁 등등 노트9

[UE4]enum을 string으로(C++) 로그 출력 등 디버깅 용도로 enum 값을 출력하고 싶을 때가 있다. 123456789FString APlayerCharacter::GetEStateAsString(EStateType EnumValue){ const UEnum* enumPtr = FindObject(ANY_PACKAGE, TEXT("EStateType"), true); if (!enumPtr) { return FString("Invalid"); } return enumPtr->GetNameStringByIndex((int32)EnumValue);}Colored by Color Scriptercs 이와 같이 쓰면 된다.enum은 blueprinttype으로 되있어야 한다. 참고로 4.16버전 이전에는 GetEnumName을 썼는데, 그 이.. 2018. 11. 24.
[UE4]데칼 생성(스폰)(코드) 캐릭터가 공격할 때 공격 범위를 데칼로 표현해주고 싶었다. 데칼이 표면에 제대로 출력될 수 있도록 데칼의 사이즈와 Rotation 값을 잘 설정해주어야 한다. 데칼은 캐릭터에 하나 둬서 사이즈를 변경해가면서 써도 되지만 언리얼 엔진 특성상 FadeOut을 하면 사라지고 나서 Destroy되어 그냥 Spawn 시켜서 사용해보았다. 데칼생성은 UGameplayStatics의 SpawnDecalAtLocation을 이용하면 된다. 예제 123456789101112 FVector NewSize = FVector(64.0f, 80.0f, 64.0f); float BoxSize = AttackRangeBox->GetScaledBoxExtent().Y; FVector NewLocation = GetActorLocat.. 2018. 11. 13.
[UE4]코드 상에서 머티리얼 로드 1234#include "UObject/ConstructorHelpers.h" static ConstructorHelpers::FObjectFinder Material(TEXT("에디터 상에서 머티리얼 레퍼런스를 복사하면 해당 머티리얼의 경로를 가져올 수 있다"));cs 마우스 커서 데칼 로드 예제123456789101112 //Set Cursor Decal CursorToWorld = CreateDefaultSubobject("CursorToWorld"); CursorToWorld->SetupAttachment(RootComponent); { static ConstructorHelpers::FObjectFinder DecalMaterialAsset(TEXT("Material'/Game/Materials.. 2018. 11. 13.
[UE4]캐릭터의 이동 및 회전 보간(마우스 클릭, TopdownView) 탑다운에서의 마우스 클릭을 통한 이동은 WASD 와 마우스 회전 축에 따른 이동방식과는 다르게 마우스 회전값을 캐릭터 회전값에 맵핑하는 방식이 아니다. 따라서 캐릭터가 이동할 때, 이동할 방향을 구해 회전값을 보간하여 자연스럽게 캐릭터를 회전시켜주어야 한다. 아래는 구현된 예시 코드이다. 123456789101112131415void APlayerCharacterController::MoveAndRotation(float DeltaTime){ ACharacter* Character = GetCharacter(); //Smooth Move UCharacterMovementComponent* MovementComponent = Character->GetCharacterMovement(); float Spee.. 2018. 10. 25.