본문 바로가기
반응형

분류 전체보기419

Unreal Particle Object 가져오기 [Unreal/C++] Particle Object 가져오기 언리얼 엔진에서 ParticleSystemComponent를 만들고 Particle Object를 가져와서 ParticleSystemComponent에 있는 Template에 적용시킵니다. 언리얼 엔진에서 파티클 시스템을 사용할 수 있도록 Particle System Component를 지원합니다.ParticleSystemComponent는 #include "Particles/ParticleSystemComponent.h" 헤더에 적용되어 있습니다.// MyActor.hclass UParticleSystemComponent;UCLASS()class MAINPROJECT_API AMyActor : public AActor{ GENERATED_BO.. 2024. 1. 11.
Unreal Collider On/Off 충돌체 켜고 끄기 [Unreal/C++] Collider On/Off 충돌체 켜고 끄기 언리얼 엔진에서 게임을 만들 때 공격 상태에서만 충돌체를 켜는 것이 효율적일때가 많다.위 이미지 처럼 앞에 충돌체를 두면 공격상태가 아님에도 불구하고 실시간으로 충돌처리가 일어난다. 원하는 동작은 박치기를 했을 때 플레이어에게 데미지를 주는 것이다. 불필요한 말들을 제거하고 충돌체를 끄고 켜는 방법을 설명하자면 콜리전의 상태를 바꿔주는 것이다.저 오브젝트 타입은 C++에서 ECollisionEnable에 enum 형식으로 정의되어 있다.NoCollision = 충돌체를 사용하지 않는다.QueryOnly = 이벤트 발생을 위해 사용한다.PhysicsOnly = 물리적 충돌을 위해 사용한다.QueryAndPhysics = 이벤트와 물리적 .. 2024. 1. 11.
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.
반응형