들어가기 전에...

아래 페이지를 먼저 읽는 것이 빠른 이해에 도움이 됩니다.

https://ondolroom.tistory.com/287

 

자바 스윙 이미지 점프 + 낙하 하게 만들기 (프로젝트 대비)

스윙에 이미지를 하나 올리자 낙하가 멈추는 필드가 필요하고 현재 떨어지는 중인지 현재 점프 중인지 확인하는 변수를 생성한다. 그리고 시간을 가져오는 메서드도 하나 만든다. JPanel을 상속��

ondolroom.tistory.com

 

 

더블점프를 위한 준비

점프 횟수를 카운트 하기 위한 변수를 하나 선언 및 초기화 해준다.

 

키 리스너 수정

이전에는 바닥에 닿았을 때만 점프 할 수 있었지만 이제는 공중에서 한번 더 점프해야한다.

더블점프가 2미만일 때만 점프 하도록 설정하자.

 

점프 쓰레드가 가동되면 doubleJump에 1을 추가하고

이번 점프가 몇회째의 점프인지 nowJump에 임시로 저장한다.

 

점프 중일 때 점프가 한번 더 되는 경우 처음 점프를 멈춰준다.
(멈춰주지 않으면 상승 가속이 붙는 것처럼 할 수 있으나 쿠키런에서는 가속이 붙지 않는 것처럼 보이기 때문에 추가함)

그리고 점프가 끝나면 조건에 따라 jump를 false로 변경한다.
(if문이 없다면 스페이스를 따닥 눌러서 더블점프를 할경우 첫번째 점프 스레드의nowJump는 1이고 doubleJump는 2이기 때문에 더블점프 도중 jump가 false로 바뀌어 버린다. 그래서 if문을 추가함)

 

낙하스레드 수정

처음 빨간 박스는 이번 주제와 관련이 없는 내용이지만, imgY에 낙하량을 더해주다보면 낙하량이 더 클 경우가 생긴다.

예를들어 바닥은 250인데 현재 발바닥위치가 240이다. 그때 낙하량이 20이라면 결과적으로 발바닥 위치는 260이 된다.

그러한 점을 보정하기 위한 장치이다.

두번째 박스는 떨어지다가 더블 점프를 할 경우 낙하를 중지하기 위한 조건문이다.

낙하 while문을 빠져나왔을 때 무조건 doubleJump가 0이 된다면 무한점프가 가능해진다.
(바로 위 단락에서 jump가 true면 break하는 조건을 만들었기 때문)

이러한 것을 막기위해 (바닥에 닿았거나 점프 중이 아닐 때) doubleJump를 0으로 바꾸도록 하였다.

 

결과

 

 

 

 

 

 

+ Recent posts