Unreal 캐릭터 - 움직임의 제약(선딜과 후딜)

2025. 4. 4. 20:30·Unreal5 프로젝트 다이어리

 

지난번의 문제점을 다시 되짚어보도록 하자

크게 문제는 두가지다

  1. 평타가 3번째까지 진행된후 다시 첫번째 평타로 돌아올때의 딜레이가 없음
  2. 클릭의 최소딜레이 가 없다

크게 이 두분제를 겪었다

일단 1번문제부터 해결해보도록 하자

우리는 meleeAttack에 분명 이런 타이머를 넣었을것이다

타이머 안에 타이머를 넣어서

콤보가 리셋될때 delayAttack타이머가 실행되어서 bHasDelayAttack bool변수를 false로 변경하였다

또한 평타의 switch case문에 조건문을 추가하였다

bHasDelayAttack이 false일만 실행가능하도록 만들었다

그리고 case2 즉 3번의 공격이 끝나면 딜레이가 있도록

case2일때도 true로 변경해 딜레이를 적용시켜주었다

 

자 그리고 남은 2번문제

인풋을 받을수있는 최소시간값을 넣어주고싶었다

두가지변수를 선언해줬다

마지막클릭시간과 클릭의 딜레이시간

lastClickTime / clickInterval

이렇게 두개를 선언후에

바인드되어있는 InputMouseLeftClick부분을 수정해주었다

currentTime에 현재 월드내의 시간을 저장후

딜레이값보다 적으면 리턴시켜버리도록 했다

 

그리고 마지막 클릭 시간을 현재 시간으로 갱신하기위해 즉 재사용하기위해

lastClickTime = currentTime 을 작성해주었다

 

그러면 우린 두가지를 적용한것이다

1. 콤보어택은 1.0초 안에 다시 인풋이 있으면 콤보어택의 다음콤보로 넘어간다

2. clickInterval 즉 0.2초라는 최소클릭시간이 만들어졌다 (광클방지)

 

라인트레이서 (빨간줄)이 클릭하고있다는 의미이다

확인해보면 광클을 해도 일정 딜레이를 적용해줬기때문에 정상적으로 작동한다

 

그런데 생각지도 못한곳에서 이상한점을 발견해버렸다

세번째 애니메이션이 작동할때 다른데를 클릭해도 움직이지않는다는것이다

 

흔히 보통 후딜이 너무 크다 라는 의미이다.

후딜이 크면 조작감이 너무 구리다 수정해야겠다

 

마우스 클릭하는곳에 제약을 걸어줬다

지금 몽타쥬가 실행되고있다면

comboNum을 0 즉 콤보스택을 삭제하고 몽타쥬를 멈춰라 제약을 걸어줬다

이 작업까지 마무리하면 플레이어는 움직일때 애니메이션이 자연스럽게 후딜이 사라지고카이팅도 가능하게 바뀌었다!

계속 플레이해보고 이상한점을 크게 두개 발견했다 (또?)

첫째 우클릭이 pressed되고있을때는 좌클릭의 meleeAttack이 나가지않는다는것

이동중에 좌클릭이 안된다 (정확하게는 멈춰서 평타를 치고 다시 움직여야하는 불편함이있다)

또다른 문제는

우클릭을 미리 선입력해놨다면 meleeAttack 공격이 나가도 무조건 실행시켜버린다는것이다

일단 이동중에 공격을하면 선입력해두었던 이동을 멈춰보도록하자

내가 고안한방식은

마우스우클릭을 하고있는동안

그리고 우클릭을 했을때

즉 움직임 값이 있으면 bool변수값 하나를 바꿔서

이동할때는 true 이동하지않을때는 false 조건을 걸어서

 

값이 true일때 즉 이동하고있을때는 움직임을 제약하도록했다

일단 인풋값을 봐보자

여기서 생각하지못한게있었다

 

보면 pressed밖에없다 누루고있을대밖에 없는데

released도 필요할꺼같아 추가해줬다

마우스 우클릭 Released의 추가 및 함수이름 변경(통일성가지게)

통일성을 위해 이름도 깔끔하게 통일해줬다

누루고있을때 땟을때 확인할변수

를 선언후 pressed할때 true Released할때 false로 만들어주었다

그럼 값이 true 즉 입력값이 있을때는 움직임을 멈추도록 해보자

누루고있을때와 땟을때

로그가 출력되게 추가해줬고

로그가 나오는걸 보면 변수가 잘 바뀌고있다는걸 확인할수있다

만약 좌클릭이있을때 StopMovement를 해버린다면?

수정전의 선입력을 해놨던 곳에 공격후 무조건 이동해버리는 모습이다.

수정후 선입력을 해도 이동하지않는다

 

수정이 잘 된 모습

이제 이동중에 공격이 안되는 문제를 수정해보자

문제는 우클릭을 누르고있을떄 (이동중일떄) 좌클릭을 눌렀을때 이다

전체적인 컨트롤러의 tick코드를 수정했다

 

우클릭을 눌렀을때 선입력문제를 고치자니 공격이 나가질않아서

공격하는 매커니즘을 추가해주고 1,3번공격에 후딜을 없애주었다

드디어 게임다운 조작감이 느낌이 나온다

 

'Unreal5 프로젝트 다이어리' 카테고리의 다른 글

Unreal 캐릭터 - 위젯애니메이션  (0) 2025.04.04
Unreal 캐릭터 - UI위젯과 동기화  (0) 2025.04.04
Unreal 캐릭터 - 콤보어택  (0) 2025.04.04
Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분  (0) 2025.04.04
Unreal 캐릭터 - 플레이어 마우스 이동, 입력키 바인딩, 스테이트머신  (1) 2025.04.04
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal 캐릭터 - 위젯애니메이션
  • Unreal 캐릭터 - UI위젯과 동기화
  • Unreal 캐릭터 - 콤보어택
  • Unreal 캐릭터 - 소켓의 활용, 외부에셋활용, 칼들려주기, 모드의구분
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (121) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (3) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (21)
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (1)
      • 코드 개인보관함 (8) N
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    unreal sequence
    unreal look at
    unreal 로딩
    unreal 시퀀스
    언리얼 로딩창
    언리얼 시퀀스
    unreal loading
    언리얼 foot step
    언리얼 페이드 아웃
    언리얼 컷씬
    언리얼 behaviortree
    언리얼
    unreal 모션매칭
    언리얼 behavior tree
    언리얼 로딩
    언리얼 비헤이비어트리
    unreal 컷씬
    언리얼 look at
    언리얼 motionmatching
    언리얼 모션매칭
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal 캐릭터 - 움직임의 제약(선딜과 후딜)
상단으로

티스토리툴바