Make Unreal REAL.
article thumbnail
이동 방향에 따른 스트레이핑(Strafing)

Unreal Engine 5 C++ Multiplayer Shooter 무기 장착 시에 와리가리를 하기 위해서는 캐릭터가 항상 앞을 보고 있어야 하는데, 현재는 그렇지 않다. Combat 컴포넌트에서를 장착 시에 항상 앞을 보고 컨트롤러의 회전을 따르도록 변경한다. 서버에서는 서버에서만 실행되는 EquipWeapon() 함수에서 설정해준다. 클라이언트에서는 RepNotify 함수를 통해 적용해주도록 한다. 장착한 무기 액터 변수인 EquippedWeapon은 원래 복제된 변수였다. 이제 항상 컨트롤러의 Yaw와 동기화된 앞 방향을 보고 있는 것을 확인할 수 있다. 무기를 장착하고 걸을 때 재생되는 EquippedRun 블렌드 스페이스의 두 축에 적용할 값인 YawOffset과 Lean을 애님 인스턴스에 ..

article thumbnail
블렌드 스페이스

Unreal Engine 5 C++ Multiplayer Shooter 걷는 데 사용할 블렌드 스페이스를 생성한다. 앞으로 걷는 Jog_Fwd_Rifle 애니메이션을 복제한다. Skeleton Tree에서 Root Bone을 선택한 후 10도 정도 기울여준다. 타임라인 바를 0으로 위치시키고 + Key 버튼을 눌러 시작 지점에 키를 추가한다. 그러면, 수정된 사항이 타임라인에 나타나는 것을 볼 수 있다. 이 상태에서 Create Asset 메뉴에서 새로운 애니메이션 에셋을 생성하면, 현재 수정된 Skeleton Tree의 변경 사항이 Bake된 상태로 새로운 애니메이션을 생성할 수 있다. 우선 저장하는 것을 잊지 말자. Root Bone의 회전값이 Bake된 새로운 애니메이션이 생성됐다. 우측으로 10도..

article thumbnail
조준 동작 동기화

Unreal Engine 5 C++ Multiplayer Shooter Combat 컴포넌트에 조준 중인지 여부를 저장하는 bAiming 속성을 선언하고 복제되도록 한다. 조준에 우클릭을 매핑하고 함수를 바인딩한다. 캐릭터 클래스에서 IsAiming() 함수를 제공한다. 캐릭터 클래스는 Combat 컴포넌트의 friend로 설정되어 있기 때문에 private 멤버에 바로 접근할 수 있다. Combat 컴포넌트는 캐릭터 클래스를 위해 특별히 제작된 컴포넌트이기 때문에 friend로 선언해도 괜찮다. 애니메이션 블루프린트에서 사용하기 위해 애님 인스턴스에 bAiming 속성을 추가한다. 애니메이션 블루프린트 수정 서버에서 조준할 경우는 동기화되는데 클라이언트에서는 되지 않는다. 서버에서 조준할 경우만 리플리..

article thumbnail
창 모드로 플레이
Unreal Engine/팁 2023. 4. 6. 11:43

에디터 메인이 아닌 블루프린트에서 플레이를 누르면 창 모드로 플레이할 수 있다. 멀티 플레이를 테스트할 때 유용하다. 플레이 모드를 New Editor Window (PIE)로 설정해도 된다.

article thumbnail
웅크리기 동작 동기화

Unreal Engine 5 C++ Multiplayer Shooter Shift 키를 웅크리기로 매핑하고 바인딩한다. ACharacter::Crouch(), UnCrouch() 함수는 웅크리기를 요청하는 함수일 뿐, 직접 실행하지는 않는다. ACharacter::bIsCrouched 속성을 통해 웅크린 상태인지 확인할 수 있으며, 복제된 변수이므로 클라이언트에 자동으로 업데이트가 전송된다. 클라이언트에서도 서버 RPC 등을 이용하는 것으로 추측된다. OnRep_IsCrouched() 함수를 오버라이드해, 웅크리기와 일어서기에 추가 기능을 구현할 수도 있다. 애니메이션 블루프린트에서 웅크리기 애니메이션을 적용하기 위해, 애님 인스턴스에 bIsCrouched 속성을 선언한다. 애니메이션 블루프린트에서 상태..

article thumbnail
무기 장착 애니메이션 동기화

Unreal Engine 5 C++ Multiplayer Shooter 애님 인스턴스에 무기를 소지 중인지 저장하는 변수를 선언한다. 캐릭터 클래스에서 Combat 컴포넌트의 EquippedWeapon 프로퍼티를 통해 무기 소지 여부를 함수로 제공한다. NativeUpdateAnimation() 함수에서, 애니메이션 블루프린트에서 사용할 무기 소지 여부를 갱신한다. 애니메이션 블루프린트에 Equipped 상태를 추가하고, 무기 소지 여부와 Blend Poses by bool 노드를 이용해 포즈를 변경하도록 한다. 그런데 서버에서만 무기 소지 애니메이션으로 변경됐고, 클라이언트에서는 애니메이션이 변경되지 않았다. 액터 컴포넌트의 SetIsReplicated() 함수는 액터가 리플리케이션 중일 때 액터의 일..

검색 태그