본문 바로가기
반응형

Unreal176

Unreal Debug 용 원(Circle) 그리기 [Unreal/C++] Debug 용 원(Circle) 그리기 언리얼 엔진 Debug용 DrawDebugCircle()AiController에서 sight 확인하려고 출력해보았다. FVector center = OwnerEnemy->GetActorLocation(); center.Z -= AdjustCircleHeight; // 원을 그릴 방향까지 지정 앞에서 오른쪽으로 시계방향 DrawDebugCircle(GetWorld(), center, Sight->SightRadius, 300, FColor::Green, false, -1, 0, 0, FVector::RightVector, FVector::ForwardVector);void DrawDebugCircle( const UWorld* InWorld, .. 2024. 1. 11.
Unreal BeginPlay에서 Skeletal Mesh 바꾸기 [Unreal/C++] BeginPlay에서 Skeletal Mesh 바꾸기 생성자가 아닌 곳에서는 StaticLoadObject로 오브젝트를 불러올 수 있다.void AMyCharacter::BeginPlay(){ Super::BeginPlay(); UObject* mesh = StaticLoadObject(USkeletalMesh::StaticClass(), nullptr, L"SkeletalMesh'/Game/CityofBrass_Enemies/Meshes/Enemy/Corpse_Basic/Corpse_Basic.Corpse_Basic'"); GetMesh()->SetSkeletalMesh(Cast(mesh));}      StaticLoadObjectFind or load an object by .. 2024. 1. 9.
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 Spawn Actor시 Owner을 설정합시다. [Unreal/C++] Spawn Actor시 Owner을 설정합시다. 언리얼에서 무기를 Spawn 시키고 충돌 처리를 하던 중 Fatal Error를 만났다. 무기에 BoxCollision을 붙이고 PrimitiveComponent에서 받아온 OnComponentBeginOverlap 이벤트를 성공적으로 설정하였다.void Actor::OnComponentBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) UGameplayStatics에 있는.. 2024. 1. 7.
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 Launch Character 동작 하지 않는 이유 [Unreal/C++] Launch Character 동작 하지 않는 이유 언리얼 엔진에서 캐릭터의 넉백 효과를 구현할 때 Launch Character 함수를 자주 사용한다.이를 통해서 적들이 밀려나는 효과를 줄 수 있는데 BehaviorTree에서나 다른 경우에 MoveTo 함수가 실행되고 있을 경우동작을 하지 않는다. LaunchCharacter(GetActorForwardVector() * 1000, false, false) 2024. 1. 2.
반응형