본문 바로가기
반응형

unreal75

Unreal 캐릭터 대쉬, 구르기에 사용할 수 있는 LaunchCharacter [Unreal/C++] 캐릭터 대쉬, 구르기에 사용할 수 있는 LaunchCharacter 언리얼에서 대쉬나 구르기 구현에 Launch Character 함수를 사용할 수 있습니다. 자연스러운 대쉬나 구르기를 사용하고 싶은 경우 Physics Simulation 옵션을 켜고 AddForce, AddImpulse 등을 사용할 수 있습니다. LaunchCharacter(GetActorForwardVector() * 1000, false, false);   #include "GameFramework/Character.h" virtual void LaunchCharacter( FVector LaunchVelocity, bool bXYOverride, bool bZOverride)캐릭터에 보류 중.. 2024. 1. 14.
Unreal 플레이어를 바라보는 방향으로 적 회전 [Unreal/C++] 플레이어를 바라보는 방향으로 적 회전 언리얼 Find Look At Rotation적 캐릭터가 플레이어 캐릭터를 바라보도록 구현ACharacter* target = Status->GetTarget(); // 어떤 방법으로든 플레이어를 가져온다.if (target){ SetActorRotation(UKismetMathLibrary::FindLookAtRotation(GetActorLocation(), target->GetActorLocation()));} 2024. 1. 14.
Unreal 적이나 목적지의 방향 구하기 [Unreal/C++] 적이나 목적지의 방향 구하기 언리얼 엔진에서 A에서 B로 향하는 방향을 알고 싶을 때 사용한다.원거리 무기같은 투사체에 적용하기 좋다.A위치에서 B로 향하는 방향을 알고싶을 때에는B 위치에서 A위치를 빼고 정규화를 해주면 된다. 언리얼에서 Actor의 위치를 가져오는 함수는 GetActorLocation() 이다.나의 경우는 Mesh에 Socket을 붙여놔서 소켓의 위치를 구해야하기 때문에 GetSocketLocation()도 사용했다.GetMesh()->GetSocketLocation("SocketName"); 아래와 같이 B위치에서 A위치를 뺀 Normal Vector를 구하면 -1~1까지의 방향으로 정규화된다.FVector ALocation = GetMesh()->GetSoc.. 2024. 1. 12.
Unreal Binding 실패 Ensure condition failed [Unreal/C++] Binding 실패 Ensure condition failed 언리얼 엔진 OnComponentBeginOverlap 다이내믹 델리게티으 Bind 실패SphereCollider->OnComponentBeginOverlap.AddDynamic(this, &AFireBall::OnComponentBeginOverlap); Ensure condition failed [2024.01.12-06.09.00:471][280]LogOutputDevice: Error: Ensure condition failed: this->IsBound() [File:F:\UnrealEngine-5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignature.. 2024. 1. 12.
Unreal Mesh Socket 위치에서 SpawnActorDeferred 하기 [Unreal/C++] Mesh Socket 위치에서 SpawnActorDeferred 하기 언리얼 엔진에서 액터를 생성하는 방법입니다. Spawn Actor와 다르게 SpawnActorDeferred는 모든 설정이 완료된 후 FinishSpawning을 호출해주어야 정상적으로 배치됩니다. FVector location = GetMesh()->GetSocketLocation("ThrowSocket"); // 소켓 이름으로 소켓의 위치를 가져온다.FTransform transform(location); // SpawnActorDeferred를 하기 위한 Transform을 설정한다.AFireBall* fireBall = GetWorld()->SpawnActorDeferred(FireBall, transfo.. 2024. 1. 12.
Unreal SpawnActorDeferred시 Particle이 재생되지 않음 [Unreal/C++] SpawnActorDeferred시 Particle이 재생되지 않음 언리얼 엔진에서 SpawnActorDeferred 시 파티클이 자동으로 재생되지 않을 때생성이 아직 완료되지 않거나 Activate가 호출되지 않아서 그렇다. 블루프린트 에디터에서 Auto Activate가 켜져 있는지 확인한다. FinishSpawning이 호출되었는지 확인한다.AFireBall* fireBall = GetWorld()->SpawnActorDeferred(FireBall, transform, this, this, ESpawnActorCollisionHandlingMethod::AlwaysSpawn);fireBall->FinishSpawning(fireBall->GetTransform()); 2024. 1. 12.
Unreal Particle이 RootComponent에 붙지 않고 따로 움직임 [Unreal/C++] Particle이 RootComponent에 붙지 않고 따로 움직임  언리얼 엔진에서 RootComponent아래에 Particle System을 넣었을 때 일어나는 현상이다. 블루프린트 에디터 상에서는 아래와 같이 잘 붙어있지만PIE에서는 Particle System이 붙어있지 않고 따로 존재한다. 이는 단순히 언리얼 엔진의 버그이다. 에디터 상에서 컴파일 버튼을 한 번 눌러보고 그래도 작동하지 않는다면 에디터를 다시 껐다 켜주는 방법이 있다. 2024. 1. 12.
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.
반응형