오늘의 목표
언리얼 멀티플레이 강의 수강 완료하기
프로퍼티 레플리케이션 심화
레플리케이션이나 시리얼라이제이션 할 때 -> bool 대신 uint8 자료형 사용.
uint8로 1비트만 사용한다는 걸 확실히 해줌.
멀티플레이 관련 로직은 간단하게 짜야 함.
multicastRPC 함수 내에서 bIsReplicated = true로 만드는 로직이 있을 경우에
bIsReplicated = true가 먼저 적용돼서 multicastRPC 함수를 통해 폭탄을 폭발시키는 것이 불가능해질 수 있음.
(무엇이 먼저 호출되는지는 정해져있지 않음)
depths가 너무 깊은 로직을 짜면 안 됨! 특히 멀티플레이 로직에서는 로직이 완전 꼬여버릴 수 있음.
애니메이션
에임에 따라 고개가 돌아가는 애니메이션
void ADXPlayerCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if (IsValid(GetController()) == true)
{
PreviousAimPitch = CurrentAimPitch;
FRotator ControlRotation = GetController()->GetControlRotation();
float NormalizedPitch = FRotator::NormalizeAxis(ControlRotation.Pitch);
CurrentAimPitch = FMath::Clamp(NormalizedPitch, -90.0f, 90.0f);
}
}
컨트롤러에서 ControlRotation을 받고, 이를 Pitch값으로 변환하여 CurrentAimPitch로 사용.
여기서는 Tick을 통해 매 틱 Rotation을 확인.
if (IsLocallyControlled() == true && PreviousAimPitch != CurrentAimPitch)
{
ServerRPCUpdateAimValue(CurrentAimPitch);
}
만약 로컬 클라이언트에서 PreviousAimPitch의 값과 CurrentAimPitch의 값이 같지 않으면 (바뀌었으면) ServerRPC를 호출하여 AimPitch값을 서버에서 변경.
'Unreal5 공부 > TIL' 카테고리의 다른 글
| 2026/07/06 TIL (0) | 2026.07.06 |
|---|---|
| 2026/07/02 TIL (0) | 2026.07.02 |
| 2026/06/22 TIL (0) | 2026.06.22 |
| 2026/06/18 TIL (0) | 2026.06.18 |
| 2026/06/17 TIL (0) | 2026.06.17 |