Game Programming
-
카메라 흔들리는 효과Game Programming/언리얼 2023. 10. 11. 16:40
void AMyCharacter::StartFireTimer() { if (bShouldFire) { FireWeapon(); bShouldFire = false; GetWorldTimerManager().SetTimer( AutoFireTimer, this, &AMyCharacter::AutoFireReset, AutomaticFireRate); GetWorldTimerManager().SetTimer( AutoFireLightTimer, this, &AMyCharacter::AutoFireLightOnOff, AutomaticFireLightRate); GetWorldTimerManager().SetTimer( AutoCameraShakeRoll, this, &AMyCharacter::AutoCame..
-
Cross hair FactorGame Programming/언리얼 2023. 10. 10. 17:08
케릭터가 점프 중일 때 if (GetCharacterMovement()->IsFalling()) { CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 2.25f, DeltaTime, 2.25f); } else { CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 0.f, DeltaTime, 30.f); } 조준 중일 때 if (bAiming) { CrosshairAimFactor = FMath::FInterpTo(CrosshairAimFactor, 0.6f, DeltaTime, 30.f); } else { CrosshairAimFactor = FMath::FInterpTo(Crossh..
-
Add CrossMultiplier to HUDGame Programming/언리얼 2023. 10. 10. 15:21
MyCharacter 변수를 블루프린트에 추가 후 Event BeginPlay에서 초기화를 진행했다. 블루프린트가 진행 중에 MyCharacter가 없으면 가져와, 크로스헤어 멀티플라이어를 사용 해 Crosshair Spread Multiplier를 초기화했다. 내가 만들고자 한 것은, HUD에 기본 Aim HUD가 보이다가, Zoom In시 추가 HUD가 보이는 기능이였는데 MyCharacter에서 읽어온 Branch 노드를 통해서 구현했다. 화면 해상도의 가운데를 BaseCenter로 잠고 Crosshair SpreadMax * Crosshair Spread Multiplier를 곱한 값을 더해 좌, 우, 상, 하에 골고루 포인트를 지정했다.
-
ZoomIn ZoomOut 마우스 민감도 조절Game Programming/언리얼 2023. 10. 9. 20:30
float TurnScaleFactor{}; if (bAiming) { TurnScaleFactor = MouseAimingTurnRate; } else { TurnScaleFactor = MouseHipTurnRate; } 화면 회전 함수에 MouseAimingTurnRate와 MouseHipTurnRate을 분기해서 if (!Rate) BaseTurnRate = 0.f; BaseTurnRate = FMath::FInterpTo( BaseTurnRate, Rate, GetWorld()->GetDeltaSeconds(), 30); AddControllerYawInput(TurnScaleFactor * BaseTurnRate); 위와 같이 회전에 대한 민감도를 조절했다.
-
카메라 Zoom In, OutGame Programming/언리얼 2023. 10. 8. 16:55
카메라 Zoom In, Out 효과를 위해 Tick에서 아래와 같은 코드를 짯다. if (bAiming) { CameraCurrentFOV = FMath::FInterpTo( CameraCurrentFOV, CameraZoomedFOV, DeltaTime, ZoomInterpSpeed); GetFollowCamera()->SetFieldOfView(CameraCurrentFOV); } else { CameraCurrentFOV = FMath::FInterpTo( CameraCurrentFOV, CameraDefaultFOV, DeltaTime, ZoomInterpSpeed); GetFollowCamera()->SetFieldOfView(CameraCurrentFOV); } Zoom In, Out일 때에 ..