- 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;
}
