Make Unreal REAL.
article thumbnail
Rotate Root Bone

Unreal Engine 5 C++ Multiplayer Shooter 이제 [-90°, 90°] 범위를 벗어났을 때 옆으로 도는 애니메이션은 작동하니, 실제로 캐릭터의 회전도 돌려보도록 한다. 현재 가만히 있을 때는 bUseControllerRotationYaw 옵션을 꺼서 캐릭터의 몸은 바닥에 고정되어 있고, Aim Rotation을 통해 AO_Yaw를 계산해 무기를 조준하고 있다. 따라서, 현재는 좌측과 같은 상황이다. 무기는 마우스에 따라 해당 방향을 조준하고 있지만, 실제로 캐릭터는 빨간 화살표의 방향을 보고 있는 것이다. [-90°, 90°] 범위를 벗어났을 때 해당 방향(회전)으로 몸을 돌리기 위해서는, 우측과 같이 실제 캐릭터의 방향도 빨간 화살표의 방향이 되어야 한다. 단, 이때도 캐릭터..

article thumbnail
옆으로 도는 애니메이션 적용

Unreal Engine 5 C++ Multiplayer Shooter 현재 가만히 서서 무기를 조준하기 때문에, [-90°, 90°] 범위 밖의 회전을 수행하면 부자연스럽게 보이는 현상이 있다. 좌우측 회전에 따라 해당 방향으로 옆으로 도는 애니메이션을 재생해본다. 애님 인스턴스에서 가만히 있기, 왼쪽으로 돌기, 오른쪽으로 돌기를 판별하기 위해 열거형을 선언할 헤더를 생성한다. .cpp 소스 파일은 필요 없으므로, 언리얼 에디터가 아닌 VS에서 직접 생성한다. VS에서 소스 혹은 헤더 생성 시, 지워지기 쉬운 Intermediate 폴더가 기본 폴더로 설정되므로 바꿔줘야 한다. VS를 닫은 후 Binaries, Intermediate, Saved 폴더를 지우고 VS 파일을 재생성해주면 바뀐 폴더 구조가..

article thumbnail
FABRIK

Unreal Engine 5 C++ Multiplayer Shooter FABRIK(Forward And Backward Reaching Inverse Kinematics) 언리얼 엔진에서 제공하는 애니메이션 IK 기능이다. FABRIK Forward And Backward Reaching Inverse Kinematics, 앞뒤로 늘어나는 IK 를 사용하는 애니메이션 노드입니다. docs.unrealengine.com FABRIK을 활용해 현재 무기 장착 시 부자연스럽게 보이는 왼쪽 손의 위치를 조정해본다. 우선 무기 메쉬에 소켓을 추가한다. 나중에 다른 무기들에도 사용할 수 있도록, 소켓 이름에 일관성을 유지해야 한다. 애니메이션 블루프린트에서 FABRIK 노드를 사용할 때, IK 끝 지점의 Tran..

article thumbnail
회전 리플리케이션 시 고려할 사항

Unreal Engine 5 C++ Multiplayer Shooter 로컬에서는 잘 되는데, 클라이언트에서 테스트 해보면 특정 상황에서 왠지 하늘만 보고 있는 현상이 생긴다. 서버에서 왜 이상한 곳을 바라보고 있는지 확인하기 위해, Pitch 값을 출력해본다. 0도 기준 위를 보고 있을 때는 문제가 없다. 0도보다 낮은 곳을 보고 있으면, Pitch가 음수가 아닌 360° - θ°의 값을 갖는 것을 볼 수 있다. 왜 네트워크를 통해 복제된 Pitch는 양수 값을 갖는지 확인해보자. Character Movement 컴포넌트에서 PitchINT로 검색하면, 이 부분에서 Yaw, Pitch, Roll을 패킹하여 서버에 전송하는 것을 확인할 수 있다. 패킹된 Yaw, Pitch와 Roll의 자료형이 unsi..

article thumbnail
Aim Offset 적용

Unreal Engine 5 C++ Multiplayer Shooter Aim Offset의 Axis에 전달할 Yaw와 Pitch 값을 애님 인스턴스에서 관리하도록 한다. 애니메이션 블루프린트에서 사용하기 위해 Yaw와 Pitch 변수를 애님 인스턴스에 선언했지만, 실제로는 캐릭터와 관련된 값들이기 때문에 캐릭터 클래스를 통해 제공한다. 캐릭터 클래스에 Yaw와 Pitch 변수를 선언하고 Getter를 선언한 후, 매 Tick마다 값을 계산하는 AimOffset() 함수도 선언한다. 어느 방향을 보고 있든 동일한 Pitch와 달리, Yaw는 기준 회전으로부터의 차이만큼 계산해야 하기 때문에 StartingAimRotation 변수를 선언한다. 헤더를 포함한다. Aim Offset을 통한 무기 조준에서 Y..

article thumbnail
Aim Offset

Unreal Engine 5 C++ Multiplayer Shooter Aim Offset은 Blend Space와 매우 유사하게 동작한다. 다만, Axis에 해당하는 애니메이션을 블렌딩해 출력하는 Blend Space와 달리, Base Pose에다가 Axis에 해당하는 애니메이션을 추가(Additive)해 출력한다는 점이 다르다. What's the difference between AimOffset and BlendSpace? We know that AimOffset inherits from BlendSpace, but what is the core difference between the two? When should I use AimOffset instead of BlendSpace? When s..

검색 태그