Home [UE5 TPS 제작기] 5. 마우스로 시야 움직이기
Post
Cancel

[UE5 TPS 제작기] 5. 마우스로 시야 움직이기

1. Input - Axis Mappings에 마우스 추가

Project Settings에 Axis Mappings에 아래 두 값을 넣어줍니다.

  • LookUp: 위아래 시야
  • Turn: 좌우 시야

img

2. 코드

UE5에서는 회전을 Yaw, Pitch, Roll로 표현하고 있습니다.

유니티 하다 UE5로 왔을 때 이게 너무 어려웠다..

왜 이런 이름을 썼나 했는데 아마 비행 쪽에서 쓰는 용어를 그대로 들고 와서 그런 것 같습니다.

위키피디아에 Yaw Ptich Roll 관련으로 Aircraft 설명 글이 있는데 이와 동일한 내용으로 적용되고 있으니 참고하셔도 좋을 것 같습니다.

 Aircraft principal axes - Wikipedia

간단하게 정리하자면 아래와 같습니다.

  • Roll: X축 회전
  • Ptich: Y축 회전
  • Yaw: Z 축 회전

Transform에서 Rotation 값에 마우스 포인터를 갖다 대면 각 축의 의미를 바로 확인할 수 있으니 이렇게 확인해도 됩니다.

img_1

이를 인지하고 코드를 구현하면 아래와 같이 작성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// header file

UCLASS()
class TPS_PROTOTYPE_API APlayerCharacter : public ACharacter
{
	GENERATED_BODY()

protected:
	void LookUp(float);	// LookUp 메서드 추가
	void Turn(float);	// Turn 메서드 추가
public:	
	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// CPP 파일

void APlayerCharacter::LookUp(float AxisValue)
{
	AddControllerPitchInput(AxisValue);
}

void APlayerCharacter::Turn(float AxisValue)
{
	AddControllerYawInput(AxisValue);
}

// Called to bind functionality to input
void APlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
    
	PlayerInputComponent->BindAxis("LookUp", this, &APlayerCharacter::LookUp);
	PlayerInputComponent->BindAxis("Turn", this, &APlayerCharacter::Turn);
}

AddControllerPitchInput(AxisValue), AddControllerYawInput(float AxisValue)은 AxisValue 값을 통해서

각 회전축에 해당하는 값을 더해주는 메서드입니다.

 Add Controller Roll Input

3. 코드 작성 결과

코드를 작성하고 돌려보면 이상한 점을 확인할 수 있는데 좌, 우 시야 이동을 잘 되지만 위, 아래 시야 이동은 되지 않습니다.

4. 위, 아래 시야 이동 안 되는 오류 수정

위, 아래 시야 이동이 되지 않는 이유는

Spring Arm 컴포넌트 중 폰 제어 회전 사용(use Pawn Control Rotation) 값이 false 이기 때문입니다.

img_2

이 값을 true로 바꿔주면 LookUp이 제대로 활성화되는 것을 볼 수 있습니다.

5. 코드 추가

위에서 확인한 내용들은 코드로 추가해줍니다.

1
2
3
4
5
6
7
APlayerCharacter::APlayerCharacter()
{
	_springArm->bUsePawnControlRotation = true;
	_springArm->bInheritPitch = true;
	_springArm->bInheritRoll = true;
	_springArm->bInheritYaw = true;
}
This post is licensed under CC BY 4.0 by the author.

[UE5 TPS 제작기] 4. Input - Axis Mappings으로 캐릭터 움직이기

[UE5 TPS 제작기] 7. AnimInstance