카메라회전과 에임 오프셋

DevBison·2025년 9월 4일

UE5 Aim Offset으로 캐릭터 고개 회전 구현

1) 카메라 회전 입력 액션 생성

  • IACameraRotation 입력 액션 생성
  • Value Type: Axis2D(Vector2D)
  • Trigger: Cumulative (누적값)

2) 마우스 축 값 매핑

  • IMCGameMouseX, MouseY 입력축 추가
  • Swizzle(YXZ)로 축 값 변환
    • X축: 마우스 좌우 (오른쪽 +1, 왼쪽 -1)
    • Y축: 마우스 상하 (위 +1, 아래 -1)

3) 입력 클래스 세팅

  • Input.hUGameInput에 변수 추가
    FVector2D mCameraRotation;
  • Input.cppCameraRotationAction 등록

4) 플레이어 캐릭터에 바인딩

  • 캐릭터에서 키 바인딩 추가
  • CameraRotationKey 함수 등록

5) 스프링암 회전 제어

  • 마우스 입력값으로 스프링암 회전 제어
  • 위/아래 각도는 제한을 걸어야 뒤집히지 않는다
void APlayerCharacter::CameraRotationKey(const FInputActionValue& Value)
{
    FVector2D Axis = Value.Get<FVector2D>();

    FRotator NewRot = SpringArm->GetRelativeRotation();
    NewRot.Yaw   += Axis.X;
    NewRot.Pitch += Axis.Y;
    NewRot.Pitch = FMath::Clamp(NewRot.Pitch, -80.f, 80.f); // 각도 제한

    SpringArm->SetRelativeRotation(NewRot);
}

6) AnimInstance 변수 추가

PlayerDefaultAnimInstance.h

float mAimLookUp;
float mAimSide;

void SetAimInfo(float LookUp, float Side);
  • SetAimInfo에서 변수 세팅
  • LookUp 범위를 -90~270에서 -180~180으로 보정

7) 마우스 회전 적용 확인

컴파일 후 플레이 → 마우스 회전이 정상 적용된다.


8) Aim Offset 생성

  • Aim Offset 생성
  • BlendSpace와 유사하지만, 고개 방향 전용 블렌딩 클래스
  • BlendSpace처럼 축과 샘플 애니메이션 배치
  • 캐릭터가 안 보이면 Preview Base Pose를 바꿔준다

9) 애님 그래프 연결

  • Jump 스테이트(최종 포즈) → Aim Offset 노드 연결
  • OutputPose로 연결 마무리

10) 마무리

  • 입력 → 스프링암 회전 → AnimInstance 전달 → AimOffset 블렌딩 흐름

  • 결과: 마우스 방향에 맞춰 캐릭터 고개가 자연스럽게 회전한다

  • 확장:

    • 상체 전용 블렌딩(Layered Blend per Bone) 적용 → 이동 중에도 고개 회전 유지
    • ADS(조준) 시스템 구현 시 활용 가능

profile
응애 개발자

0개의 댓글