인프런 커뮤니티 질문&답변

윤창식님의 프로필 이미지
윤창식

작성한 질문수

[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문

State 패턴듣고 질문드립니다..

작성

·

122

·

수정됨

0

안녕하세요 루키스님

저는 비전공자로서, 강의 너무 잘듣고있습니다.

이해가 아주 쏙쏙됩니다.

이때까지 제 자존심이 허락하지 않아

뭐 안되는거있으면 구글링이나 chatgpt한테 물어봐가면서 아득바득해결했는데

이건 도저히 이해가 안되네요...

 

제가 공격을 구현하는 코드에서 실수로 UpdateAnimation 부분을 빼고 연결해버렸습니다.

나머지는 강의랑 동일한 코드로 작성하였습니다

근데 요상하게도 나머지 기능은 정상적으로 작동하는데 공격시, 2회연속공격을 하더라구요??

아니 공격키가 먹히는 것도 요상한데 2회연속공격도 요상합니다.

 

공격키가 먹히는 이유는 Event Tick에 걸어준 코드 때문에

Update Input 함수에서 노란선방향으로 쭉 나가서 UpateAnimation쪽으로 가주면서

공격키를 눌러주긴했으니까 EState가 Skill값으로 받아줘서 결과적으로 공격 모션을 취한것으로 예상을하고있는데

근데 왜 2회연속공격으로 실행될까요??

예전에 말씀하시길 Tick이 frame단위로 굉장히 짧은시간이니깐

공격키가 눌린 찰나의 시간동안 저 과정이 2번 반복되서 그런걸까요??

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

루키스님의 질문에 대해 답변드리겠습니다.

루키스님의 분석이 정확합니다. Tick 이벤트는 매 프레임마다 실행되기 때문에, Tick에 연결된 로직은 매우 짧은 시간 내에 여러 번 반복 실행될 수 있습니다. 공격키를 누르는 순간부터 Tick에 의해 해당 입력이 여러 프레임에 걸쳐 반복 감지되어 “2회 연속공격”처럼 보일 수 있습니다.

이를 방지하기 위해서는 일반적으로 입력 상태를 관리하는 변수를 사용하여, 공격이 이미 실행되었는지를 체크하고 공격 애니메이션이 완료될 때까지 추가 공격 입력을 무시하는 로직을 추가합니다. 이렇게 함으로써 연속적으로 동일한 입력이 들어와도 한 번의 입력으로 처리할 수 있습니다.

예를 들어, “Skill” 상태에 진입했을 때는 추가 ‘Attack’ 입력을 무시하도록 하고, ‘Skill’ 애니메이션이 완료되거나 다른 조건(이동 상태로 복귀 등)에서 ‘Skill’ 상태를 해제하여 다시 공격 가능한 상태로 만드는 식입니다. 이 방법은 공격 동작을 더 통제하고 사용자의 의도에 맞게 게임의 반응을 만들 수 있게 합니다.

루키스님의 게임 개발 학습에 소소한 도움이 되었기를 바랍니다. 추가적인 질문이나 도움이 필요하시다면 언제든 문의해 주세요.

윤창식님의 프로필 이미지
윤창식

작성한 질문수

질문하기