본문 바로가기
반응형

Unreal/Manual132

Unreal 적의 체력이 화면을 정면으로 바라보도록 구현 [Unreal/C++] 적의 체력이 화면을 정면으로 바라보도록 구현 언리얼에서 적의 체력을 표시할 때 간편하게 처리할 수 있는 기능이 있다.그것은 위젯의 SpaceMode를 Screen으로 설정하는 것인데, 이는 화면 상에 고정적인 크기로 출력을 해주기 때문에 편리하지만 사용하지 못하는 환경이 많다. 적의 체력 같은 경우 멀리서는 보일 필요가 없고 시야가 가려질 경우 출력을 하지 않아야 하기 때문이다.SpaceMode를 Screen으로 설정할 경우 아래 이미지와 같은 문제가 발생한다.시야가 가려져 있음에도 불구하고 Widget이 벽을 뚫고 화면 상에 출력된다.그래서 SpaceMode를 World로 바꿔서 사용해야 하는데 이는 캐릭터 기준으로 정면만을 바라본다.체력이 화면상에 표시되려면 Widget이 항상.. 2024. 1. 9.
Unreal Widget Get World Location [Unreal/C++] Widget Get World Location 언리얼 엔진에서 위젯의 세계 위치 가져오기언리얼 엔진 블루프린트에서는 GetWorldLocation을 지원한다.하지만 C++에서는 무슨일인지 GetWorldLocation이 없다.이는 블루프린트에서 표시되는 이름과 C++에서 사용되는 이름의 형식이 다르기 때문이다.SceneComponent에서 GetWorldLocation을 찾아보면 ScriptName="GetWorldLocation"을 찾아볼 수 있다.마찬가지로 World Scale, Rotation, Transform 도 이름만 다를 뿐 정의되어 있다.이를 이용해 위젯의 위치를 가져올 수 있다. 2024. 1. 9.
Unreal 검 궤적 Sword Trail 만들기 [Unreal] 검 궤적 Sword Trail 만들기 Trail은 자취, 꼬리, 끌고 간 자국 등의 의미로 쓰입니다.검날의 시작부터 끝 부분까지 공기를 가르는 듯한 효과는 게임의 퀄리티를 높여줍니다.이제 Trail 효과를 쓰지 않는 게임은 찾아보기 힘든데 이를 언리얼 엔진에서 Material과 Particle System으로 제작할 수 있습니다. 먼저 필요한 머티리얼과 파티클 시스템을 만들어줍니다.머티리얼 이름은 접두사 'M'을 붙여 "M_SwordTrail" 로 만들고 파티클 시스템은 접두사 'PS'를 붙여 "PS_SwordTrail"로 만듭니다. MaterialMaterial 에서는 그래프에 조금 조작이 필요합니다. 왼쪽 하단 디테일 패널에서 설정을 변경합니다.- 블렌드 모드 : Translucent.. 2024. 1. 8.
Unreal 아군, 적군 구별하기 [Unreal/C++] 아군, 적군 구별하기 언리얼에서 아군과 적군을 구별하기 위해 AActor의 Tags를 활용할 수 있습니다. Tag는 충돌대상 여부 판단, 아군 적군 구별, 오브젝트 찾기 등 여러 상황에서 사용됩니다.  Tag를 지정한 후 필요에 따라 Actor에 정의되어 있는 ActorHasTag함수를 이용하여 Tag를 포함하고 있는지 쉽게 찾을 수 있습니다.위 함수를 사용하여 쉽게 예외처리가 가능합니다.if (OtherActor->ActorHasTag("TagName")) return;   Tag를 지정하는 것은 어렵지 않습니다.Actor에는 Tags가 정의되어 있으니 Actor를 상속받은 하위 클래스라면 어느 곳에서든 사용할 수 있습니다.Tags.Add(FName("TagName")); AMy.. 2024. 1. 8.
Unreal 캐릭터 충돌 프리셋 설정 Character Collision Preset [Unreal/C++] 캐릭터 충돌 프리셋 설정 Character Collision Preset 캐릭터에는 캡슐 컴포넌트가 기본적으로 지정되어 있습니다.GetCapsuleComponent()로 캡슐 컴포넌트를 가져올 수 있고Collision에는 ProfileName을 설정하는 것이 있습니다.콜리전 프리셋을 변경하는 방법은 다음과 같습니다.아래는 참고용 이미지 입니다. AMyCharacter::AMyCharacter(){ GetCapsuleComponent()->SetCollisionProfileName(TEXT("CollisionPresetName"));} 콜리전 프리셋은 편집->프로젝트셋팅->엔진->콜리전->프리셋에서 설정 가능합니다. 2024. 1. 8.
Unreal 아군, 적군 충돌 구별하기 Collision Channel [Unreal] 아군, 적군 충돌 구별하기 Collision Channel 언리얼에서 아군과 적군을 구현할 때 충돌이 되지 말아야 할 오브젝트들이 있습니다.이들을 항상 코딩으로 제외하는 것은 귀찮은 일이라 생각합니다. 언리얼 엔진에서는 오브젝트, 트레이스 채널 등으로 충돌 가능 여부를 미리 지정해줄 수 있습니다.충돌 설정은 언리얼 엔진 편집 -> 프로젝트 셋팅 -> 엔진 -> 콜리전 탭에서 설정할 수 있습니다. 오브젝트 별로 구별하기 위해 Object Channel에서 새 오브젝트 채널을 만듭니다. 이름은 Enemy로 설정하였고 기본 반응은 Block로 설정했습니다. 필요하다면 Player 채널도 추가해줍니다.여기서 기본 반응은 프리셋에서 따로 설정을 하지 않았을 때 적용되는 기본 값입니다.아래 Pres.. 2024. 1. 8.
Unreal Apply Radial Damage 범위 공격 [Unreal/C++] Apply Radial Damage 범위 공격 UGameplayStatics::ApplyRadialDamage반경 내에서 지역적 피해를 줍니다. 최소 1개의 액터에 피해가 적용되면 True를 반환합니다.  - Syntaxstatic bool ApplyRadialDamage( const UObject * WorldContextObject, // 월드 float BaseDamage, // 기본 데미지 const FVector & Origin, // 데미지 근원지 float DamageRadius, // 데미지 범위 TSubclassOf DamageTypeClass, // 데미지 타입 const TArray & IgnoreActors, // 피해 제외 액.. 2024. 1. 8.
Unreal AI Controller Class 가져오기 [Unreal/C++] AI Controller Class 가져오기 언리얼 엔진에서 적을 컨트롤하는 AIControllerPawn 클래스에서 정의되어 있으며 TSubclassOf 형식으로 정의되어 있다. 적에서 Ai Controller 클래스를 가져와 블랙보드(Blackboard)의 값을 수정하려 했는데 AIController 클래스를 가져오는데에 애를 썼다. Pawn 클래스에서는 아래와 같이 정의되어 있는데 이 클래스를 그대로 사용하면 될 줄 알았다. 그래서 Cast(AIControllerClass->GetDefaultObject())->Something() 형식으로 사용하려 했지만 실패했다.그 이유는 CDO(Class Default Object)와 관련이 있는데 TSubclassOf는 그냥 기본 클래.. 2024. 1. 5.
Unreal UDamageType 구현 [Unreal/C++] UDamageType 구현 언리얼 엔진에서는 데미지를 주고 받을 수 있도록 기능을 제공한다.  기본적으로 데미지를 주는 것은 Apply Damage 함수들을 사용하고Apply DamageHurts the specified actor with generic damage. Target is Gameplay StaticsApply Point DamageHurts the specified actor with the specified impact. Target is Gameplay StaticsApply Radial DamageHurt locally authoritative actors within the radius. Will only hit components that block the.. 2024. 1. 2.
Unreal 적 사망 상태 유지, Animation 상태 유지 [Unreal] 적 사망 상태 유지, Animation 상태 유지 언리얼 엔진에서 적 체력이 0이되면 사망 애니메이션을 재생한다.이 때 사망 애니메이션이 다 재생된 후에 Animation Blueprint에 의해 Walk상태로 되돌아가거나 특정 Animation이 재생된다. 이러한 문제는 ABP에서 자동으로 Blend를 설정해왔기 때문이다.Bone별로 레이어를 구분하거나 FullBody Slot을 이용해 재생할 것이다. 여러가지 정지하는 방법이 있겠지만 유용하게 사용할 수 있는 옵션이 있다. 애니메이션 몽타주에서 Auto Blend Out 기능을 비활성화 해주면 된다. 2023. 12. 28.
Unreal 게임이 실행중인지 에디터에서 편집중인지 확인하기 [Unreal/C++] 게임이 실행중인지 에디터에서 편집중인지 확인하기 Unreal 엔진에서 작업하다보면 현재 상태가 궁금한 적이 있을 것이다.실행중이 아닌데 Unreal Editor가 Fatal Error를 내며 꺼진다거나 Montage 실행 중 Notify에 의해 null을 만나 종료된 적도 있을 것이다. 이러한 현상은 언리얼 엔진의 실행 프로세스가 꽤나 복잡하기 때문이다.에디터에서는 실행중이 아니지만 엔진 내부에서 여러가지 프로세스가 실행된다.초기화는 물론 생성자, 애니메이션, Preview 등 여러가지 기능들을 계속 감시하고 있는데 Editor에서 실행중이 아님에도 에러가 나는 현상은 꽤나 번거롭다.매번 다시 키는 일도 쌓이면 한숨만 나오기 쉽다. 이러한 현상을 조금은 줄여줄 수 있는 방법이 있다.. 2023. 12. 28.
Unreal Widget Component TextBlock 사용하기 [Unreal/C++] Widget Component TextBlock 사용하기 Unreal Engine (UE) TextBlock Widget Change Text WidgetComponent 이 글에서는 언리얼 엔진에서 텍스트박스를 적 위에 두고 이름을 표시합니다.  먼저 위젯 블루프린트를 만들어 줍니다.SizeBox와 TextBlock를 차례로 추가합니다.SizeBox는 너비와 높이를 오버라이드 하여 크기를 설정해줍니다.TextBlock는 이름을 설정해 줍니다. 이 이름은 C++ 코드에서 변수의 이름으로 사용할 예정이기 때문에 변수 여부에 체크해주고 적절한 이름으로 정합니다.가운데 정렬을 해주고 필요시 컬러와 폰트 크기를 설정해줍니다.   클래스가 만들어지면 위젯 블루프린트에서 부모 클래스를 생성한.. 2023. 12. 28.
반응형