게임엔진

    [Unreal] FVector과 FRotator간 변환

    // FVector > FRotator FRotator::MakeFromEuler(FVector); FVector 변수.Rotation(); // FRotator > FVector FRotator 변수.Vector();

    [Unreal] C++ 버전 변경(C++ 20기능 사용) 방법과 모듈

    언리얼에선 디버그 속성 통해 전체 .sln 파일에 대해 언어를 지정 할 수가 없다. UE 5 기준 전체 언리얼 모듈들은 C++ 17버전으로 작성 되어있다, 따라서 20 버전으로 업그레이드 한 후 참조할 때 에러가 날 수 있다. 각 모듈 Build.cs 파일 내에 // CppStandardVersion.Latest 즉 최신 버전 설정 시 17 버전으로 설정 됨. CppStandard = CppStandardVersion.Cpp17; // C++ 20 기능 사용하고자 할 때 아래와 같이 작성하면 된다. CppStandard = CppStandardVersion.Cpp20; 아래는 현재 사용하고 있는 직접 구현한 모듈들이다. Objects 같은 경우엔 탄알(파티클 이펙트) Niagara System을 사용해야..

    [Unreal] 마우스 방향을 따라가는 총기 애니메이션 (Aim Offset)

    Animation에는 Aim Offset과 Aim Offset1D가 존재한다. 가장 큰 차이점은 파라미터 개수의 차이다. 에임 오프셋은 하나의 애니메이션이기 때문에 애님 인스턴스에서 설정 해줘야한다. 가장 눈여겨봐야할건 Additive Settings이다 Aim Offset과 구성할 애니메이션 Sequence이 Preview Base Pose가 일치 해야한다. 애니메이션 Sequence 내 Additive Anim Type을 Mesh Space와 Base Pose Type을 Selected animation frame으로 설정하는것도 중요하다. 가운데, 가운데 상, 가운데 하, 오른쪽, 오른쪽 상, 오른쪽 하, 왼쪽, 왼쪽 상, 왼쪽 하가 각각 구성 후 추가한다. Horizontal Axis을 Yaw로 ..

    [Unreal] RootComponent 루트 컴포넌트

    루트 컴포넌트는 충돌 인식과 월드 스페이스에서 오브젝트의 위치를 결정하고 항상 충돌을 탐지하는 컴포넌트(메쉬(Skeletal, Static) , 충돌체)여야 한다. 메쉬 컴포넌트를 설정했을 시 Mobility라는 항목이 추가된걸 확인해 볼 수가 있다, 이는 크게 3개로 나뉜다. 추가적으로 Set Simulate Physics를 할 시 무조건 Movable이여야 한다. Static > 맵에서 움직이진 않고 라이트닝 또한 인게임 중 위치를 바꿀 수가 없다. Stationary > 맵에서 움직이진 않지만 라이트닝 위치를 인게임에서 바꿀 수가 있다. Movable > 맵과 라이트닝 동일하게 움직일 수가 있다. 참고 : https://docs.unrealengine.com/4.26/en-US/BuildingWor..

    [Unreal] RadialForceComponent 하중을 가하는 컴포넌트

    Radial Force Component를 추가한 후 루트 컴포넌트에 부착한다. 추가적으로 대상 오브젝트는 항상 Simulate Physics true 상태여야 한다. Radius > 범위 Object Types To Affect > 하중을 가하고자 하는 오브젝트(엑터) 타입 Impulse Strength > Fire Impulse 함수를 통해 하중을 단방에 가할 힘 Impulse Vel Change > 하중을 대상 오브젝트 무게와 상관없이 일정하게 가하는 것 Force Strength > 별다른 함수 호출 없이 하중 컴포넌트가 Activate 상태일 때 서서히 하중을 가할 힘 캐릭터는 폭발물에 하중을 가할 필요가 없으므로 제거해줬다. RadialForceComp->RemoveObjectTypeToAff..

    [Unreal] 언리얼 콜리전(충돌), 트레이스(추적) 유형

    언리얼의 콜리전은 오브젝트 타입과 트레이스 타입으로 나뉘고 각 사항에 대해 트레이스 처리를 할 수 있다. c++ 과 BP에 대응하는 함수는 아래와 같다. 여기서는 LineTrace만을 예로들었으나 구체, 박스, 캡슐등의 트래이스 모양및 다중트래이스 처리도 할수 있으니 필요하면 찾아서 쓰자(사용법은 같다. 반환되는값의 차이.) (ECollisionChannel? EObjectTypeQuery?? ETraceTypeQuery??? ) 1. 언리얼의 기본및 사용자정의 오브잭트채널, 트레이스채널은 모두 ECollisionChannel한군데에 세팅되고 트래이스에는 이값들이 사용된다. 2. EObjectTypeQuery, ETraceTypeQuery 는 ECollisionChannel에 세팅되어 있는 값을 찾아오기..

    언리얼엔진5 다운로드 및 4에서 업그레이드 방법

    여기서 .zip 파일로 받던지 git clone을 한다. 총 용량은 대략 120gb이다, 속도 향상을 시키기 위해선 ssd에 설치하는건 필수, https://github.com/EpicGames/UnrealEngine 난 다 필요없고 오직 기본꺼만 필요한다하면 에픽 스토어 앱 통해서 다운 받아도 된다. 프로젝트를 까보면 아래와 같이 2개의 .bat 파일이 있을 것이다, 우선 Setup부터 실행시킨다. .uproject 파일 우클릭 후 버전을 선택했을 시 아래와 같은 에러가 뜬다. 아까 위에 GenerateProjectFiles.bat를 실행시킨 후 설치 해야한다. 이제는 아래와 같은 폴더들을 삭제 후 재생성한다, .sln 파일 열었을 때 아래와 같이 뜬다면 정상적으로 된 것이다. 하지만 여기서 문제점이 ..

    [Unreal] 액터 스폰과 Owner 관련, 렌더타깃 UI

    아래 함수는 스폰 함수다 template T* SpawnActor( UClass* Class, const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters() ) { return CastChecked(SpawnActor(Class, NULL, NULL, SpawnParameters),ECastCheckedType::NullAllowed); } Class는 스폰하고자 하는 클래스다, 클래스::StaticClass() FActorSpawnParameters 구조체형인 독특한 인자가 넘어가는데 여기서 Owner로 액터를 지정해주면 되겠다. void UPrimitiveComponent::SetOwnerNoSee(bool bNewO..

    [Unreal] 컴포넌트 부착 함수와 방법

    // 컴포넌트가 등록이 안되어있을 시, 렌더링 되기 위해선 컴포넌트를 등록 해줘야됨. // 오직 NewObject()로 생성 되어있을 시, CreateDefaultSubObject()로 생성 되었으면 해줄 필요x 뻥남 컴포넌트->RegisterComponent(); // 루트 컴포넌트가 등록이 안되어 있을 시 (월드 기준으로 됨) 컴포넌트->SetupAttachment(부착하고자 할 액터의 루트 컴포넌트, 메쉬 소켓 명칭); // 루트 컴포넌트가 등록이 되어 있을 시 컴포넌트->AttachToComponent(부착하고자 할 액터의 루트 컴포넌트, 부착 방법, 메쉬 소켓 명칭); AttachTo < 버려질 함수라 가급적이면 사용권장 x 부착 방법은 아래와 같다. KeepRelativeTransform : ..

    [Unreal] 매터리얼 검정색 뒷배경 제거하는 방법

    Mask로 설정 후 Alpha값을 Opacity Mask에 연결