Unreal 11

[UE4] RotateVector, 인터페이스 (Interface), Particle, Spawn Emitter at Location / Attached

📒 RotateVector Enemy의 데미지 이펙트를 구현하던 도중 새로 알게된 함수 RotateVector가 있다. 언리얼 설명에서는 벡터 A를 Rotator B로 회전시킨 결과를 반환한다고 적혀있다. 이해하기 쉽도록 사용했던 블루프린트를 보면 다음과 같다. Enemy에게 데미지가 가해졌을 때 특정 이펙트를 Enemy의 위치에서 시키고싶지만, 이펙트를 출력할 위치는 Enemy에 상대적이지 않다. 따라서 출력할 이펙트의 위치를 기준으로 현재 Enemy가 바라보고 있는 Rotation값을 Rotate Vector에 전달해주면, 출력되는 이펙트가 Enemy와 같은 방향을 바라보도록 구현된다. 앞으로도 원하는 방향을 출력하고자 할 때 RotateVector를 자주 사용할 것 같아 글을 정리한다. 📘 인터페이..

[UE4] 무기 충돌 구조 (USpaceComponent)

🚩 무기 충돌 구조 짜기 (USpaceComponent) UPrimitiveComponent Primitive Rendering 데이터나 Vertex Index 데이터같은 일종의 기하학을 포함하거나 생성하는 Scene 컴포넌트 UShapeComponent 단순한 기하학적 모양으로 표현되는 Primitive 컴포넌트이며 충돌체 3개(box, Sphere, Capsule)의 부모이다! 해당 내용이 언급된 이유는 게임을 제작할 때 여러 종류의 Weapon을 제작하는데, 이때 캡슐 충돌체를 쓸지 박스 충돌체를 쓸지 미리 알지 못한다. 이런경우 부모 클래스인 Weapon이 자식 클래스들(종류 별 무기들)의 충돌 관리를 구현할 때 어떤 충돌인지 모르니 Shape Component로 모두 처리할 수 있다. 또한 몇개..

[UE4] 이벤트 디스패처(Event Dispatcher), 리플렉션(Reflection)

🚀 이벤트 디스패처 (Event Dispatcher) 플레이어의 상태를 관리하는 Player State 컴포넌트를 만들던 도중, 플레이어의 상태가 변화되었을 때 해당 상태에 맞는 함수들을 일괄적으로 호출하기 위해 이벤트 디스패처라는 기능을 사용하였다. 이벤트 디스패처에 하나 이상의 이벤트(함수)를 바인딩하면, 이벤트 디스패처 호출 시 등록된 모든 이벤트가 발동되도록 사용할 수 있다. 이러한 이벤트는 블루프린트 클래스 안에서 바인딩해도 되지만, 이벤트 디스패처를 통해 레벨 블루프린트 안에서 발동되도록 할 수도 있다. 이벤트 디스패처를 만들고 노드를 배치하면 위와 같이 호출, 바인드, 언바인드, 모두 언바인드가 뜬다. 호출: 이벤트 디스패처를 호출하여 등록된 이벤트들을 불러오기 바인드(Bind): 디스패처 ..

🎮Unreal4/Basic 2023.01.27

[UE4] 컴포넌트(Actor/Scene Component), 열거형(Enum), 퓨어 함수 설정

🎮 컴포넌트 (Component) 컴포넌트는 액터에 추가시킬 수 있는 함수성 조각으로, 독립적으로 존재할수는 없지만 액터에 추가시키면 자립적으로 사용 가능하다. 따라서 액터에는 포함시켜야 하며 그 자체로는 사용할 수 없다. 또한 컴포넌트는 일반적인 서브 오브젝트의 기본 작동방식과는 상반되게 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성된다. 즉, 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다는 뜻이다. 컴포넌트는 액터 컴포넌트와 씬 컴포넌트가 있다. 액터 컴포넌트(Actor Component)는 액터에 추가할 수 있는 재사용 가능 컴포넌트이며 기능만을 가지고 있다. 씬 컴포넌트(Scene Component)는 씬 트랜스폼을 갖는 컴포넌트로, 다른 씬 컴포넌트에..

[UE4] 머티리얼(Material), 머티리얼 인스턴싱

🌎 머티리얼 (Material) 넓게 보면 오브젝트에 적용할 수 있는 "페인트" 개념이다. 말 그대로 오브젝트가 어떤 재질로 만들어졌는지를 정의하기 때문에 그 색이나 광택, 투과성 등을 정의할 수 있다. 머티리얼의 중요한 사실은, 코드를 통해 생성되는 것이 아니라 머티리얼 에디터 안에서 노드로 엮인 망을 통해 생성된다는 것이다. 각 노드에는 특정 동작을 하도록 설계된 HLSL 코드 스니펫이 들어있다. 즉, 머티리얼을 생성하는 것은 비주얼 스크립팅을 통해 HLSL코드를 생성한다는 뜻이다. 🪐 머티리얼 인스턴싱 머티리얼 인스턴싱은 머티리얼의 비싼 리컴파일(느린 컴파일) 작업 없이 머티리얼의 외양을 바꾸는 데 사용된다. 언리얼 엔진4에서 사용가능한 머티리얼 인스턴스는 두가지 유형이 있다. Material In..

[UE4] 충돌(Overlap/Hit,Block Collision), 콜리전 반응, Collision Enabled

💥 충돌 (Collision) Overlap Hit (Block) Overlap (=겹침연산) - 처음(Begin) 충돌될 때와 충돌 객체를 통과하고 난 뒤 충돌이 끝(End)날 때 Collsion 이벤트가 호출된다. - 충돌되는 객체와 겹쳐진다. Hit (=블록연산) - 물리에 의해 충돌 객체와 충돌된 후 지나가지지 않고 막힌다. ⭐ 오버랩 충돌을 사용하기 위해선 충돌되는 객체들이 모두 Collision을 컴포넌트로 가지고 있어야 하며, 모두 Collision - Generate Overlap Events 체크가 True로 활성화되어야 한다. 충돌되는 객체 둘 중 하나라도 체크되어있지 않다면 충돌되지 않으니 주의하자 ! 또한 오버랩은 Actor 오버랩 구현과 Component 오버랩 구현이 존재하는데,..

[UE4] 애니메이션 몽타주 (Montage), Blends(본마다 레이어로 블렌딩), 몽타주 슬롯 이전구간 초기화 문제

📚몽타주란? 몽타주를 사용하면 블루프린트 또는 C++ 코드를 통해 애니메이션 애셋을 바로 제어할 수 있다. 또한 여러 애니메이션 시퀀스를 하나의 애셋으로 합칠 수 있고, 이를 여러가지의 섹션으로 나눠 일부를 조합하여 재생하는 것도 가능하다. 몽타주 안에서 노티파이를 호출하여 애니메이션 구간 중 특정 부분에서 이벤트를 발동시키면 사운드나 이펙트같은 게임 작업을 구현할 수 있다. 위 화면에서는 몽타주의 DefaultGroup을 UpperBody로 설정하여 해당 Attack 애니메이션을 상체에만 Blend하여 적용시켰고, 애니메이션이 끝날 즘 End Action 노티파이를 호출하여 애니메이션이 끝났는지를 체크하는 함수를 호출하였다. 📚 Blends 노드 / 본마다 레이어로 블렌딩합니다. Blends 노드는 뼈..

[UE4] 벡터의 성질 실습으로 증명하기

🚩 벡터의 구분 - 방향벡터: 어느 방향으로 가는지 방향 정보를 담은 벡터 방향벡터는 항상 1로 만드는 정규화(Normalization) 과정을 수행해야 한다. - 위치벡터: 좌표의 원점 0을 시작점으로 하여 공간 내의 임의의 한 점(끝점)으로 하는 벡터 ✔ A위치 + B위치 = 위치 ✔ A위치 - B위치 = B->A 방향 ✔ A위치 + (B방향 * 거리) = 위치 ex) Player위치 + (Player거리 * 속도) = Player가 이동한 위치 💻 증명 * 1번째 증명 실행 전 실행 후 첫번째 공식인 A위치 + B위치 = 위치 를 블루프린트로 증명해본 결과이다. 빨간색 큐브 객체에 블루프린트를 생성하여 현재 위치값을 받아오고 특정 Location(100, 100, 0)을 더해준 결과 원점으로 표시해..

[UE4] Animation Notify, Notify State

✔ Animation Notify, Notify State 애니메이션 노티파이(Animation Notify)를 이용하면 애니메이션의 시퀀스 도중 특정 지점에 이벤트가 발생하도록 구성할 수 있다. 예를 들어 걷기나 달리기 도중의 발소리같은 이펙트를 추가하거나 애니메이션 도중 파티클 시스템을 스폰시킬때도 주로 사용된다. 노티파이는 커스텀 유형으로도 쉽게 만들어 사용이 가능하기 때문에 어떤 유형의 게임이라도 다양하게 맞춰 제작할 수 있다. * 노티파이(Notify)와 노티파이 스테이트(Notify State)의 차이점 노티파이는 단순히 시작 지점에서 발동되어 이벤트를 발생하지만, 노티파이 스테이트는 Begin(시작), Tick(틱), End(끝) 세 개의 이벤트가 존재한다. 노티파이 스테이트는 단순히 시작해..

[UE4] VectorLength, Player 회전, BlueprintSpace, State

✔ VectorLength 벡터의 길이를 반환하는 Vector Length함수가 여러개 존재한다. VectorLengthXY : 높이인 z축을 제외하고 평면상에서 거리를 구할 때 사용된다. VectorLengthSquared : 길이를 구하는 공식에서 각 항을 제곱하여 x2 + y2 = c2(거리의 제곱)로 도출되는 제곱된 거리값을 사용할 때 사용된다. ✔ 마우스 회전을 통한 시점 회전 & Player 회전 마우스의 움직임에 따라 시점을 회전시키고, 해당 Forward 방향으로 Player가 바라보게 하고싶다면 다음과 같은 설정이 필요하다. (입력에 Forward, Right 축매핑 추가하는건 기본) * Character Movement - Orient Rotation to Movement 체크: 캐릭터..

728x90