Choose your operating system:
Windows
macOS
Linux
일반적으로 액션 매핑은 별도의 이벤트에 대한 입력을 다루며, 입력을 "친근한 이름"에 매핑시켜 나중에 이벤트 주도형 동작에 바인딩시킬 수 있도록 해줍니다. 최종 효과는 키나 마우스 버튼이나 키패드 버튼 누르기 및/또는 떼기가 바로 게임 동작을 발동시키도록 하는 것입니다.
이번 단계에서는, 스페이스 바에 대한 액션 매핑을 구성하여 캐릭터에 점프 능력을 추가하도록 하겠습니다.
점프 액션 매핑
-
편집 메뉴의 프로젝트 세팅 에 클릭 합니다.
-
프로젝트 세팅 탭 왼편의 엔진 제목줄 아래 입력 에 클릭 합니다.
-
바인딩 아래 액션 매핑 옆 더하기 부호를 클릭 합니다.
-
액션 매핑 왼편의 화살표를 클릭 합니다.
-
뜨는 글상자에 Jump 라 입력한 다음, 글상자 왼쪽의 화살표를 클릭 하여 액션 바인딩 옵션을 펼칩니다.
-
드롭다운 메뉴의 키보드 드롭다운 목록에서 Space Bar 를 선택합니다.
-
이제 입력 세팅이 다음과 같아 보일 것입니다:
-
프로젝트 세팅 메뉴를 닫습니다.
입력 처리 구현
Character 베이스 클래스에 대한 인터페이스 (*.h) 파일 안을 보면, 캐릭터 점프에 대한 지원이 내장되어 있는 것을 볼 수 있습니다. 캐릭터 점프는 `bPressedJump` 변수에 묶여 있어서, 점프 동작을 누르면 부울을 `true` 로, 떼면 `false` 로 설정해 주기만 하면 됩니다. 그렇게 하기 위해 다음의 두 함수를 추가해야 합니다:
-
StartJump
-
StopJump
Visual Studio 로 돌아가 FPSCharacter 클래스에 코드를 추가합니다.
-
FPSCharacter.h
에서 다음의 공용 함수 선언부를 추가합니다:// 키를 누르면 점프 플래그를 설정합니다. UFUNCTION() void StartJump(); // 키를 떼면 점프 플래그를 지웁니다. UFUNCTION() void StopJump();
-
FPSCharacter.h
should now look like the following:// 프로젝트 세팅의 설명 페이지에 저작권 문구를 채우세요. #pragma once #include "GameFramework/Character.h" #include "FPSCharacter.generated.h" UCLASS() class FPSPROJECT_API AFPSCharacter : public ACharacter { GENERATED_BODY() public: // 이 캐릭터 프로퍼티에 대한 기본값을 설정합니다. AFPSCharacter(); protected: // 게임 시작 또는 스폰시 호출됩니다. virtual void BeginPlay() override; public: // 매 프레임 호출됩니다. virtual void Tick( float DeltaSeconds ) override; // 함수성을 입력에 바인딩하기 위해 호출됩니다. virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; // 전후 이동을 처리합니다. UFUNCTION() void MoveForward(float Value); // 좌우 이동을 처리합니다. UFUNCTION() void MoveRight(float Value); // 키를 누르면 점프 플래그를 설정합니다. UFUNCTION() void StartJump(); // 키를 누르면 점프 플래그를 지웁니다. UFUNCTION() void StopJump(); };
-
FPSCharacter.cpp
에서 다음 함수 선언부를 추가합니다:void AFPSCharacter::StartJump() { bPressedJump = true; } void AFPSCharacter::StopJump() { bPressedJump = false; }
-
이제
SetupPlayerInputComponent
에 다음 함수를 추가하여 새로 작성된 함수에 점프 액션을 바인딩합니다:// "action" 바인딩을 구성합니다. PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &AFPSCharacter::StartJump); PlayerInputComponent->BindAction("Jump", IE_Released, this, &AFPSCharacter::StopJump);
-
FPSCharacter.cpp
가 이제 다음과 같아 보일 것입니다:// 프로젝트 세팅의 설명 페이지에 저작권 문구를 채우세요. #include "FPSProject.h" #include "FPSCharacter.h" // 기본값을 설정합니다. AFPSCharacter::AFPSCharacter() { // 이 캐릭터가 매 프레임 Tick() 을 호출하도록 설정합니다. 필요치 않은 경우 끄면 퍼포먼스가 향상됩니다. PrimaryActorTick.bCanEverTick = true; } // 게임 시작시 또는 스폰시 호출됩니다. void AFPSCharacter::BeginPlay() { Super::BeginPlay(); if (GEngine) { // 디버그 메시지를 5 초간 표시합니다. (첫 인수인) -1 "Key" 값은 이 메시지를 업데이트 또는 새로고칠 필요가 없음을 나타냅니다. GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("We are using FPSCharacter.")); } } // 매 프레임 호출됩니다. void AFPSCharacter::Tick( float DeltaTime ) { Super::Tick( DeltaTime ); } // 입력에 함수성을 바인딩하기 위해 호출됩니다. void AFPSCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); // "movement" 바인딩을 구성합니다. PlayerInputComponent->BindAxis("MoveForward", this, &AFPSCharacter::MoveForward); PlayerInputComponent->BindAxis("MoveRight", this, &AFPSCharacter::MoveRight); // "look" 바인딩을 구성합니다. PlayerInputComponent->BindAxis("Turn", this, &AFPSCharacter::AddControllerYawInput); PlayerInputComponent->BindAxis("LookUp", this, &AFPSCharacter::AddControllerPitchInput); // "action" 바인딩을 구성합니다. PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &AFPSCharacter::StartJump); PlayerInputComponent->BindAction("Jump", IE_Released, this, &AFPSCharacter::StopJump); } void AFPSCharacter::MoveForward(float Value) { // 어느 쪽이 전방인지 알아내어, 플레이어가 그 방향으로 이동하려 한다고 기록합니다. FVector Direction = FRotationMatrix(Controller->GetControlRotation()).GetScaledAxis(EAxis::X); AddMovementInput(Direction, Value); } void AFPSCharacter::MoveRight(float Value) { // 어느 쪽이 오른쪽인지 알아내어, 플레이어가 그 방향으로 이동하려 한다고 기록합니다. FVector Direction = FRotationMatrix(Controller->GetControlRotation()).GetScaledAxis(EAxis::Y); AddMovementInput(Direction, Value); } void AFPSCharacter::OnStartJump() { bPressedJump = true; } void AFPSCharacter::OnStopJump() { bPressedJump = false; }
캐릭터 점프 테스트
이제 새로 구현된 캐릭터 동작 함수를 컴파일하고 테스트할 차례입니다.
-
Visual Studio 에서
FPSCharacter
헤더 (*.h) 및 CPP (*.cpp) 파일을 저장합니다. -
Solution Explorer 에서 FPSProject 를 찾습니다.
-
FPSProject 에 우클릭 한 다음 Build 를 선택하여 프로젝트를 컴파일합니다.
-
빌드 완료 후, 언리얼 에디터에서 FPSProject 를 엽니다.
-
레벨 에디터 툴바의 플레이 버튼을 클릭 합니다. 맵에서 점프가 가능할 것입니다.
-
Esc 키를 누르거나 레벨 에디터의 중지 버튼을 클릭 하여 에디터에서 플레이 (PIE) 모드를 빠져나갑니다.