본문 바로가기
언리얼엔진 개발/Developing

[UnrealEngine5]버튼을 누르면 플레이어의 속도가 빨라지도록 하기

by yeni_0224 2023. 7. 11.
728x90
반응형

언리얼 엔진으로 내가 할 수 있는 기능들을 사소한거라도 하나씩 적어볼까 한다.

 특정 버튼을 누르면 캐릭터의 속도가 올라가도록 하는 방법


처음부터 캐릭터의 움직임까지 다 설정해가면서 작업하는 것도 있지만, 엔진에서 기본으로 세팅되어있는 캐릭터에 기능을 추가하는 방향으로 구현할 것이다. 최적화까지는 능숙하지 못하지만, 다시 공부하면서 즉흥적으로 기능을 만들어보고, 코딩을 하는 것이기 때문에, 더 좋은 방법, 더 쉬운 방법, 더 간단한 방법이 있을 수도 있다.

Dash 인풋을 만들어줄것이다. 그 다음 Bool 형태로 선택해줄 것이다. 버튼을 누르는 동안 Dash 하고, 버튼을 떼면 원래 속도로 돌아오도록 할 것이다.

Input에 IMC 아이콘이 보일 것이다. 그걸 클릭해서 Dash의 설정을 만들어줄것이다. 버튼을 누를 때, 떼어냈을 때 이렇게만들어주었다.  왼쪽 shift를 누르면 기능이 실행되도록 설정도 해주었다. 이렇게 만들어주었다면 이제 플레이어BP로 가보자.

 좌측에 최상단에 위치한 BP_ThirdPersonCharacter (Self)를 클릭한 후에 오른쪽 디테일창에 가서 Input을 검색하면 이렇게 인풋을 넣을 수 있는 공간이 뜬다. 그렇다면 이제 새로 만든 곳에 Input을 할당시켜준다.

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category= Input, meta = (AllowPrivateAccess = "true"))
class UInputAction* IA_Dash;
    
void Dash(const FInputActionValue& Value);
bool isDash;

 이제 플레이어 소스코드 헤더에서 변수와 함수를 선언해준다. 그 다음함수를 키와 바인딩 할것이다.

Character을 생성하면 있는 SetupPlayerInputComponent 함수에 가서 새로운 함수 Dash를 바인딩 시켜줄 것이다.

Started, Completed 로 TriggerEvent를 설정해주었다. 이 키를 눌렀을 때 Dash함수가 실행되도록 했다.

이제 Dash 함수로 가보자. 속도를 빠르게 움직이도록 해야하지만, 이 속도를 컨트롤 하는 함수가 이미 기본 움직임 제어하는 곳에 구현이 되어있고, 속도만 조정하면 되기 때문에 Dash 함수에 가져온다.

 

버튼이 눌렸을 때, 떼였을 때를 구별해주고자  isDash 라는 bool 변수를 사용할 것이다.

isDash = !isDash;
		
if (isDash == true)
{
    GetCharacterMovement()->MaxWalkSpeed = 1000.f;
    AddMovementInput(ForwardDirection, MovementVector.Y * 3);
    AddMovementInput(RightDirection, MovementVector.X * 3);
}
else
{
    GetCharacterMovement()->MaxWalkSpeed = 300.f;
    Move(Value);
}

기본 움직임 구현하는 구간에 있던 변수를 가져오기 위해 각 변수의 정의 부분을 그대로 들고왔고, 그 이후에 속도가 변하는 것에 대한 구현을 했다. 버튼 눌렸을 때와 눌리지 않았을 때의 차이를 명확하게 확인하기 위해

일반적인 움직임의 속도는 300으로 하고, Dash 버튼을 눌렀을 때의 상태를 3배 차이 나도록 설정해주었다.

구현 모습
728x90
반응형