본문 바로가기
프로젝트/버블버블게임 만들기

[버블버블게임만들기] 7. 점프 후 캐릭터 발판에 착지 시키기

by dantriss 2023. 8. 2.

유튜브에서 예전부터 해보고싶던 버블버블게임만들기 프로젝트를 클론코딩해보며 진행사항을 기록하고자 한다.

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


캐릭터가 벽을 통과하지 못하게 했으니 이제 비슷한 방법으로 점프를 했을때 발판이 있다면 해당 부분에서 캐릭터의 좌표를 멈춰서 발판에 올라가게 만들어보자.

 

캐릭터가 위치한 부분을 알아보기 위해서 bottomColor 라는 변수 명으로 캐릭터가 위치한 x.y 좌표를 색상으로 알아보자 

int bottomColor = image.getRGB(player.getX()+10, player.getY()+50+5);
System.out.println("bottom color"+ bottomColor);

 

캐릭터가 위치한 곳에 따라서 아래와 같은 결과값들을 얻을 수 있을 것이다.

 

-1이 출력이 될 때 흰색배경에 있는 걸 확인할 수 있었으니 조건문을 추가해서 -1일 때 점프 후 down을 한부분을 true에서 false 로 변경해준다.

if (bottomColor != -1){
    System.out.println("bottom color"+ bottomColor);
    System.out.println("바닥에 맞닿음");
    player.setDown(false);
}

 

player 클래스로 이동해서 down 메서드에서 for문을 사용하던것을 while문으로 변경해준다.

 

bubbleFrame 클래스에서 이벤트 핸들러에서 up 부분도 left와 right에서 했던것처럼 수정해준다.

 

프로그램을 실행해보면 캐릭터가 발판을 밟게 되면 down 메서드가 동작하지 않아 캐릭터가 발판에 서있을 수 있다.

캐릭터를 움직이면서 확인을 해보니 조금만 겹치게 점프를 해도 발판에서 서있을 수 있게 된다.

해당부분이 상당히 어색하게 될 수 있으니 조금 더 수정을 해주자면 backgroundPlayerService에서 

기존에 1개의 x/y값을 기준으로 발판을 찾았다면 이번엔 2개의 점을 기준으로해서 좀더 자연스럽게 발판에 올라갈 수 있도록 해보자

변수명 bottomColor가 int값이므로 두개의 기준점이 하얀색배경에 있을때이므로 -2 값이 나올 때 down 메서드를 false로 변경해주자

 

backgroundPlayerService에서 맵을 service로 bubbleFrame에선 기존맵으로 변경해준 뒤 프로그램을 실행

위처럼 수정을 해준다면 아래 사진과 같이 2개의 기준점으로 어색하게 발판에 올라갔던 캐릭터가 수정되게 된다.

backgroundPlayerService

 

 

bubbleFrame

댓글