언리얼엔진5 공부

Dash 구현하기

Client Side 2025. 10. 23. 23:19

1. MaxWalkSpeed + 타이머

  • 특성
    • 간단함: 구현하기 쉽고 이해하기 쉬워서 초보자도 접근하기 좋다.
    • 직관적: 캐릭터의 이동 속도를 직접 제어하기 때문에 원하는 만큼 빠르게, 원하는 시간 동안 대시 효과를 줄 수 있다.
    • 단점: 순간적인 "밀어내는" 듯한 느낌보다는 "빨라지는" 느낌이 강할 수 있다.
  • 사용법
// 헤더 파일에 변수와 함수 선언
private:
    float NormalSpeed;
    float DashSpeed;
    FTimerHandle DashTimerHandle;

    void StopDash();

public:
    UFUNCTION(BlueprintCallable, Category = "Movement")
    void StartDash();
// CPP 파일에서 구현
void AYourCharacter::BeginPlay()
{
    Super::BeginPlay();
    
    // 기본 이동 속도 저장
    NormalSpeed = GetCharacterMovement()->MaxWalkSpeed;
    // 대시 속도는 기본 속도의 1.5배로 설정
    DashSpeed = NormalSpeed * 1.5f;
}

void AYourCharacter::StartDash()
{
    // 대시 속도로 변경
    GetCharacterMovement()->MaxWalkSpeed = DashSpeed;
    
    // 이미 실행 중인 타이머가 있다면 초기화
    if (GetWorldTimerManager().IsTimerActive(DashTimerHandle))
    {
        GetWorldTimerManager().ClearTimer(DashTimerHandle);
    }
    
    // 0.5초 후에 StopDash 함수 호출
    GetWorldTimerManager().SetTimer(DashTimerHandle, this, &AYourCharacter::StopDash, 0.5f, false);
}

void AYourCharacter::StopDash()
{
    // 일반 속도로 복귀
    GetCharacterMovement()->MaxWalkSpeed = NormalSpeed;
}

 

2. LaunchCharacter 사용

  • 특성
    • LaunchCharacter 함수를 사용하면 캐릭터에게 한 방향으로 순간적인 힘을 가해서 슝~ 하고 날아가는 듯한 대시를 구현할 수 있다. 피하거나 짧은 거리를 도약하는 느낌의 대시에 많이 쓰인다.
  • 사용법
// 예시 코드 (C++)
void AYourCharacter::StartLaunchDash()
{
    // 캐릭터의 현재 앞 방향으로 강하게 밀어내기 (Z 값 0이면 점프 없음)
    LaunchCharacter(GetActorForwardVector() * DashForce, true, true);
    
    // 이 방식은 일정 시간 후 자동으로 감속되지만,
    // 만약 일정 시간 후에 강제로 멈추고 싶다면 타이머를 사용할 수도 있음
    // GetWorldTimerManager().SetTimer(DashTimerHandle, this, &AYourCharacter::StopLaunchDash, 0.5f, false);
}

 

 

3. 루트 모션(Root Motion) 기반 대시

  • 특성
    1. 캐릭터의 대시 애니메이션 자체에 이동 정보를 담아서 움직이는 방식.
    2. 장점: 애니메이션과 움직임이 완벽하게 동기화되어 엄청 부드럽고 자연스러워 보인다. 대시 애니메이션마다 다양한 움직임 패턴을 줄 수 있다.
    3. 단점: 애니메이션 작업이 필요하고, 구현하기가 조금 더 복잡하다. 애니메이션 길이가 고정되어 있어서 대시 지속 시간을 코드에서 유동적으로 바꾸기 어려울 수 있다.

 

4. 커브 (CurveFloat) 활용

  • 특성
    • 앞서 말한 방식들과 병행해서 사용할 수 있는데, 대시 중 속도 변화를 CurveFloat 에셋으로 정의해서 더 부드럽거나 드라마틱하게 만들 수 있다. 예를 들어, 대시 시작할 때 순간적으로 엄청 빨랐다가 서서히 원래 속도로 돌아오는 식의 대시를 구현할 때 유용하다

'언리얼엔진5 공부' 카테고리의 다른 글

랜덤함수  (0) 2025.11.11
총에 왼손 붙이기  (0) 2025.11.10
캐릭터 클래스 액션 바인딩  (1) 2025.10.22
캐스팅  (0) 2025.10.21
GameState  (0) 2025.10.17