입력 시스템 완성

DevBison·2025년 8월 17일

언리얼 Enhanced Input 바인딩 정리

PlayerController와 InputComponent

  • 이 함수는 플레이어 컨트롤러에 빙의(Possess) 하면서 자동으로 호출됨.

  • InputComponent는 APlayerController가 기본으로 가지고 있는 입력 처리용 객체.

  • 전달받은 InputComponent를 UEnhancedInputComponent로 캐스팅해서 사용한다.

    • UEnhancedInputComponent는 UInputComponent를 상속받아 강화된 입력 시스템을 제공.
    • 실제로 PlayerController는 내부적으로 EnhancedInputComponent를 생성해 InputComponent 포인터로 저장해 둠.

Input Context와 CDO

  • GetDefault<UPlatformInput>()로 CDO(Class Default Object) 를 꺼내옴.
  • Subsystem->AddMappingContext()로 입력 컨텍스트를 등록해야 키 입력이 동작함.

InputActionValue

  • InputActionValue.h 헤더 추가 필요.
  • FInputActionValue는 입력값을 Vector2D, Bool, Float 등으로 유연하게 받을 수 있게 해줌.

이동/회전 키 세팅

  • MoveKey, RotationKey 변수 선언.

  • 헤더에 함수 선언, cpp에 구현.

액션 바인딩


  • BindAction()을 사용해 특정 InputAction과 함수를 연결.
  • “이 객체에 이 함수를 호출해라”라는 방식으로 이벤트를 등록해 두는 것.

캐릭터 회전 세팅

  • APlatformCharacter::APlatformCharacter() 생성자에서 Pitch, Roll 회전 제약 설정.

  • 컴파일 후 실행하면 정상적으로 이동 가능.

점프와 공격 액션 추가

  • IAAttack, IAJump InputAction 추가.
  • 둘 다 Bool 값으로 처리.

  • Jump = Spacebar, Attack = 마우스 왼쪽 버튼.

Jump / Attack 코드 구현

  • Input.h에 Jump, Attack용 변수 선언.

  • Input.cpp에서 Jump, Attack 세팅.

  • PlatformCharacter.h에 JumpKey, AttackKey 함수 선언.

  • cpp에서 구현.

  • BindAction으로 점프, 공격 액션 바인딩.

점프 구현


  • 캐릭터 클래스(ACharacter)는 이미 Jump() 함수를 지원하므로 직접 물리 구현할 필요 없음.
  • Attack은 별도의 동작(애니메이션, 이펙트 등)을 직접 구현해야 함.

추가 내용

  1. BindAction() 설명 보충 → 단순 호출이 아니라 “이벤트 등록 시스템”이라는 점 강조.
  2. Jump 기능 → ACharacter에서 기본 지원해주기 때문에 Jump() 호출만 하면 됨. (추가 설명 필요)
  3. Attack은 Unreal 기본 제공 기능이 없어서, 사용자 정의 함수로 로직 구현해야 한다는 점 명확히.

profile
응애 개발자

0개의 댓글