반응형
개발을 진행하고 테스트하면서 민감도가 너무 빠르다는 것을 느꼈다. (저감도 유저...)
그래서 인게임에서 마우스 민감도를 조절할 수 있도록 구현하였다.
구현 방법
- esc버튼 or 특정버튼 키 입력 설정
- UserWidget을 상속받은 설정위젯 클래스 선언 및 구현
- 플레이어 캐릭터에서 마우스 민감도를 조절할 float 변수 선언
- 마우스 민감도 조절할 위젯을 meta = (BindWidget)으로 선언
- 위젯의 입력값이 바뀌었을때 각 함수 바인딩 -> 플레이어에게 해당 값 전달
코드
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "ReturnToMainMenu.generated.h"
/**
*
*/
UCLASS()
class BLASTER_API UReturnToMainMenu : public UUserWidget
{
GENERATED_BODY()
private:
UPROPERTY(meta = (BindWidget))
class USlider* MouseSensitivityBar;
UPROPERTY(meta = (BindWidget))
class UEditableTextBox* MouseSensitivityValue;
UPROPERTY()
class APlayerController* PlayerController;
protected:
virtual bool Initialize() override;
UFUNCTION()
void ChangeSensitivityBar(float Value);
UFUNCTION()
void ChangeSensitivityTextValue(const FText& Text);
};
void UReturnToMainMenu::ChangeSensitivityBar(float Value)
{
UWorld* World = GetWorld();
if (World)
{
PlayerController = PlayerController == nullptr ? World->GetFirstPlayerController() : PlayerController;
if (PlayerController == nullptr)
return;
ABlasterCharacter* Character = Cast<ABlasterCharacter>(PlayerController->GetCharacter());
if (Character == nullptr)
return;
MouseSensitivityValue->SetText(FText::FromString(FString::Printf(TEXT("%f"), Value)));
Character->SetMouseSensitivity(Value);
}
}
void UReturnToMainMenu::ChangeSensitivityTextValue(const FText& Text)
{
UWorld* World = GetWorld();
if (World)
{
PlayerController = PlayerController == nullptr ? World->GetFirstPlayerController() : PlayerController;
if (PlayerController == nullptr)
return;
ABlasterCharacter* Character = Cast<ABlasterCharacter>(PlayerController->GetCharacter());
if (Character == nullptr)
return;
MouseSensitivityBar->SetValue(FCString::Atof(*Text.ToString().TrimQuotes()));
Character->SetMouseSensitivity(MouseSensitivityBar->GetValue());
}
}
.h
FORCEINLINE void SetMouseSensitivity(float _Sensitivity) { MouseSensitivity = _Sensitivity; }
.cpp
void ABlasterCharacter::Turn(float Value)
{
AddControllerYawInput(Value * MouseSensitivity);
}
void ABlasterCharacter::LookUp(float Value)
{
AddControllerPitchInput(Value * MouseSensitivity);
}
반응형
'언리얼5' 카테고리의 다른 글
[UE5 Multiplayer Shooting-End] 최종 인게임 영상 (1) | 2023.10.03 |
---|---|
[UE5 Multiplayer Shooting-15] 팀 데스매치, 점령전 구현(영상) (2) | 2023.09.27 |
언리얼 엔진 PostEditChangeProperty에 대해서 (0) | 2023.09.05 |
[UE5 Multiplayer Shooting-14] Reload, Match State, Scatter 알고리즘 구현 및 무기 추가 (0) | 2023.08.21 |
[UE5 Multiplayer Shooting-13] Health 및 PlayerState 추가Score, Defeasts 관련 (2) | 2023.08.14 |
댓글