[44. Aim Look Sensitivity]
APawn::AddControllerYawInput(Value); // X축
APawn::AddControllerPitchInput(Value) // Y축
마우스 감도를 따로 설정할 필요가 없이 고정적이라면 별다른 입력 함수를 구현하지 않고도 기본으로 제공되는 함수를 바인딩 시키면 된다.
다만 감도 설정이 추가되는 경우에는 함수를 Value에 설정된 값을 계산해서 넘겨주면 된다.
추가로 해당 변수가 특정 값의 범위만을 가지길 원한다면 UPROPERTY에서 지정해주면 된다.
UPROPERTY(meta = (ClampMin="0.0", ClampMax="1.0", UIMin="0.0", UIMax="1.0"))
// 0~1 사이의 값만 가질 수 있고 에디터의 패널에서 0~1 사이의 값만 비율로써 표기된다
[48. Crosshair Spread Velocity]
FMath::GetMappedRangeValueClamped(const Vector2D &InputRange, const Vector2D &OutputRange, const float Value);
/* 예시 */
Vector2D Input(0.f, 600.f);
Vector2D Output(0.f, 1.f);
float Result = FMath::GetMappedRangeValueClamped(Input, Output, 150.f);
// Result : 0.25f
Value를 InputRange 범위에 대해서 OutputRange 백분율로 반환해준다.
CrosshairSpreadMultiplier = 0.5f + CrosshairVelocityFactor; // 0.5~1.5
[49. Spreading the Crosshairs]
캐릭터의 가속과 상태에 따라 조준점이 퍼지거나 좁혀지는것이 슈팅게임의 일반적인 매커니즘이다.
캐릭터의 현재 속력를 백분율로 구해서 조준점이 벌어지는 계수에 곱하면 된다.
조준점이 4방향으로 퍼져야하기 때문에 하나의 텍스처가 아닌 조준점 각 방향의 텍스쳐를 4개 사용해야 한다.
![](https://blog.kakaocdn.net/dn/RDhP5/btrQsD7NPrF/pSonBVPYkKV5Uw41pdEyjk/img.png)
(조준점의 최대 퍼짐값 * 속력 비율) 값을 화면 중앙 기준으로 빼거나 더하면 된다.
조준점 상하좌우 각각 총 4개를 해주면 된다.
![](https://blog.kakaocdn.net/dn/bYGfWd/btrQq30Gh1v/p3nZPj676ey8KenWbPBIfK/img.webp)
[50. Crosshair In Air Factor]
캐릭터가 점프 등으로 공중에 있는 경우 조준점이 더 벌어지는것도 일반적인 매커니즘이다.
위에서 사용한 계산식에 공중 상태일 때 보간한 값을 더해주면 된다.
if (GetCharacterMovement()->IsFalling())
{
CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 2.25f, DeltaTime, 2.25f);
}
else
{
CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 0.f, DeltaTime, 30.f);
}
CrosshairSpreadMultiplier = 0.5f + CrosshairVelocityFactor + CrosshairInAirFactor;
[54. Automatic Fire]
![](https://blog.kakaocdn.net/dn/VJmWW/btrQtRkAmBE/RPilmkvwtZIZRcTOjwxfp1/img.png)
bool, 타이머 핸들을 이용해서 연사를 구현할 수 있다.
'언리얼 엔진 > UE C++ Shooter Course' 카테고리의 다른 글
[UE C++ Shooter] Weapons (0) | 2022.11.07 |
---|---|
[UE C++ Shooter] Animations (0) | 2022.10.25 |