본문 바로가기
게임 만들기/1942 비행슈팅 게임 만들기

배경화면 자동 스크롤 기능 만들기.

by 나도처음이야 2020. 6. 2.
반응형

하기 처럼 배경 화면을 스크롤 하기위해서는

여러장의 이미지가 필요하다. 여기선 반복된 2장의 이미지를 활용하여 무한으로 스크롤 되는 배경화면을 만들어 보자.

 

//배경 순서
int bg_order = 1;
// 1번 배경 Y 축 이미지 좌표
private int
bgImage1_y_pos =  0;
// 2번 배경 Y축 이미지 좌표
private int
bgImage2_y_pos =  0;
// 배경의 스크롤 속도
private int
bgScroll_speed = 2;
// 스크린 화면 크기.
private int _width, _height ; 

private void scrollBgImage(Canvas canvas)
{
 
        if(bg_order == 2){       
            // bg2
먼저 그리고 -> bg1 뒤에 따라옴
           
canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos , null);
            // 1번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요.
           
canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos - _height, null);
       
}else{
            // bg1
먼저그리고 -> bg2 뒤에 따라옴
           
canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos, null);
           // 2번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요. 
           canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos - _height, null);
       
}
        // Y 축 포지션을 일정하게 이동시키면 화면이 스크롤 된다.
        // 즉, scrollBgImage() 는 쓰레드에 의해서 지속적을 호출 되기에...
       
bgImage1_y_pos += mScreenConfig.getY(bgScroll_speed);
       
bgImage2_y_pos += mScreenConfig.getY(bgScroll_speed);;

        // 1번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록.  
        if
(bg_order == 1 && bgImage1_y_pos == _height && bgImage2_y_pos - _height == 0) {
         
  bg_order = 2;
           
bgImage2_y_pos = 0;
           
bgImage1_y_pos = 0;
       
}
 
        // 2번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록.  

       
if(bg_order == 2 && bgImage2_y_pos == _height && bgImage1_y_pos - _height == 0) {
         

           
bg_order = 1;
           
bgImage2_y_pos = 0;
           
bgImage1_y_pos = 0;
       
}

   
}

 

즉, 쓰레드에서 위 함수를 무한 반복으로 호출하게되면

배경 1, 2가 연속적으로 무한으로 그려지기에, 스크롤 효과를 구현 할 수 있다.

감사합니다 :)

반응형

댓글