ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메탈슬러그 중간과정 5 - background
    Code/Winapi 2020. 7. 7. 01:07

    애니메이션 구축 방법 


    1. 스프라이트 : 한번 그릴 때 다 그림을 바꿔 그려 움직이는 것 처럼 보이게 한다.

       단점 -> CPU의 성능에 맡기면 일정하게 움직이지 않는다.

       => CPU 클럭수가 아니라 CPU 시간에 맞추어 움직일 수 있도록. (주로 60 프레임에 맞춤.)

     

    timegettime(); 함수 사용.

    => 컴퓨터가 부팅된 시간으로부터의 시간을 반환한다. (1초 = 1000)

     

    ex )

       curtime = timegettime();

       if (curtime = pertime >= 시간)

       {

          스프라이트 위치 이동

          prevtime 갱신.

       }

     

    여기서 시간을 framdelay 로 느리고 빠르게 시간을 조절할 수 있다.

    ex ) if ( curtime = pertume >= 시간 * framdelay)

    framdelay => 1.0f (높아질수록 느려지고 낮아질수록 빨라짐)

     

    Object.h / Object.cpp

     


    히트판정

    (총알을 몬스터에게 히트시키기)


    1. 총알객체

    2. 몬스터 객체

    3. 충돌판정 (IntersectRect() : RECT 와 충돌)

       <Manager>

       - 발사 (keyboard)

       - 총알 객체 생성

       - 총알 객체 DB Manager에 넣음 

       <Bullet>

       - Run()

         {

             for문

             {

                 히트박스와 DBManager::Monster 과 충돌 검사

                 if ( 충돌시 )

                 {

                     몬스터 hp 감소.

                     bdead ( bullet이 살아있는지 보여주는 bool 변수 ) = true;

                 }

             }

         }

        <IntersectRect()>

        RECT 두개 인자를 가지고 있음.

        닿아있으면 true. 아닐 경우 false.

        RECT1 left,top 값이 RECT2 right,bottom 보다 작으면 겹쳐짐.

        RECT2 left,top 값이 RECT1 right,bottom 보다 작으면 겹쳐짐.

     


    지형 만들기 - 타일형

    (Rect 충돌과 유사)


    지형의 모양대로 가상의 타일을 만들어 그 위에 object 가 서있을 수 있도록 함.

     

    1. 몇 칸으로 쪼개는지

    2. TerrainTile (객체생성)

    -> 플레이어와 충돌하는 로직

    3. 타일과 object가 충돌하면 위로 올려주기

Designed by Tistory.