Unreal Engine

카메라 회전(+ 캐릭터 이동 수정)

Awesome Red Tomato 2023. 7. 6. 17:44
  • Frame: 모니터에 출력되는 이미지.
  • DeltaTime: 프레임 한개를 넘기는 데 걸리는 수행시간(1초에 60개의 프레임을 넘긴다면 DeltaTime은 1/60초가 된다).
  • Frame Rate(FPS): 1초에 넘겨지는 프레임 수(1초에 모니터가 깜빡대는 수. 프레임이 높을 수록 부드럽게 보인다).
  • Tick: 보통은 한 프레임에 한 번 코드 조각이나 블루프린트를 실행시키는 것을 의미한다.

 

화면 회전

 

만약 1초에 90˚ 회전한다고 가정하면 1Tick에는 90˚ / DeltaTime 만큼 회전해야 할 것이다. 만약 매 틱마다 90˚ 회전한다고 하면 1초 60프레임인 게임에서 5400˚(15바퀴)를 회전하게 되니 주의해야 된다. 

 

Rate: 회전 입력 값

BaseTurnRate: 회전 감도

GetWorld()->GetDeltaSeconds(): 델타타임

void ACharacterBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	PlayerInputComponent->BindAxis("TurnAtRate", this, &ACharacterBase::TurnAtRate);
	PlayerInputComponent->BindAxis("LookUpRate", this, &ACharacterBase::LookUpAtRate);
}

// 수평 회전(카메라)
void ACharacterBase::TurnAtRate(float Rate)
{
	AddControllerYawInput(Rate * BaseTurnRate * GetWorld()->GetDeltaSeconds());
}

// 수직 회전(카메라)
void ACharacterBase::LookUpAtRate(float Rate)
{
	AddControllerPitchInput(Rate * BaseLookUpRate * GetWorld()->GetDeltaSeconds());
}

 

캐릭터 회전

ACharacterBase::ACharacterBase()
{   
  	// Character의 회전이 Controller의 입력에 영향을 받지 않음
	bUseControllerRotationPitch = false;
	bUseControllerRotationRoll = false;
	bUseControllerRotationYaw = false;

	// 캐릭터의 방향이 가속하는 방향과 같게 함
	GetCharacterMovement()->bOrientRotationToMovement = true;
}

 

'Unreal Engine' 카테고리의 다른 글

외곽선 하이라이트  (0) 2023.07.13
총 쏘기  (0) 2023.07.06
캐릭터 이동  (0) 2023.07.06
카메라 세팅  (0) 2023.07.06
0. UE4 시작  (0) 2023.07.06