게임제작/소스코드

[게임메이커]캐릭터 히트시 깜빡이는 점멸효과 간단하게 만들기

게임코드프리 2019. 5. 9. 09:00
반응형

#점멸효과 #캐릭터 깜빡이게 #무적시간 #게임메이커

 

 

캐릭터 히트시 무적타임을 적용하여 깜빡이게 만들기

 

 

 

 

게임을 만들다보면 캐릭터가 적에게 히트되어 깜빡이며 잠시 무적시간을 갖는 효과를 

 

만들어야 할 상황이 언젠가는 오게 됩니다.

 

무적 시간 동안에 플레이어의 캐릭터를 깜빡이면서 적정 시간이 되면 다시 원래 상태로 돌아오는

 

시스템을 좀더 세련되게 만든 사람이 없을까 찾던 중... 오히려 이미지를 활용하여 비효율적으로

 

작업을 해두었기에 그럴거면 제가 짠 코드를 쓰는것이 낫겠다 싶어 공유하며, 코딩을 어느정도 

 

하는 사람들이 이 소스 코드를 보고 그냥 웃고 넘어가 주셨으면 합니다(....)

 

※ 당연하지만 초보들은 모를수 있기에 적어두자면, 무적 시간동안 히트판정을 없애면 무적이되고

이 코드는 무적시간을 시각화 했을때의 연출을 하기 위한 코드임을 알려드립니다.

 

  • 크레이트 코드

 

 

 

변수를 선언하는 크레이트 이벤트에서는 딱 세가지의 변수가 필요합니다.

 

hit 의 경우는 히트가 되었는지 안되었는지를 나도 알고 너도 알고 컴퓨터도 알아야 하기에

 

선언 하였고 god_time 의 변수는 3초간 무적 시간을 갖기 위한 시간체크용 변수입니다.

 

alpha_time 의 경우에는 딱히 필요없을 수 있지만 점멸하는 시간을 제어 하기 위해서

 

만든 변수이며 엄청나게 빠른 속도로 점멸하길 원한다면 이 변수는 없어도 됩니다.

 

 

  • 스텝이벤트 코드
 

 

조건별로 설명

 

    if (hit = false)

    {

        if place_meeting(x,y,obj_enemy)  // 이부분은 자신이 쓰는 충돌체크로 사용 하길 바라며 예시입니다.

        {

            hit = true;

            god_time = 6;   //원래는 3으로 해야 하는데...안고쳐놓은듯

        }

    }

 

우선 처음 컴퓨터가 읽어들이는 조건은 히트 상태가 아닐 경우에만 이 코드가 작동하게 됩니다.

 

그 후, 적 오브젝트가 좌표와 플레이어가 만났다면 히트 상태가 되는 코드이며

 

적과 부딪혀서 히트 상태가 되는 것이 아닌 게임이라면 당연히 총알 혹은 검기 이펙트등으로 바꾸어서

 

적용하면 됩니다.

 

어쨋든 히트 변수는 = true 가 되고 god_time 변수를 다시 초기화 시켜주어야 합니다.

 

왜냐하면 무적 시간이 끝난뒤에 다시 히트상태가 되었을때 무적 시간을 다시 정의 해야 하기 때문이죠.

 

 

 

// 무적시간 동안 일어나는 일들

 

    if (hit = true)

    {

        god_time -= 0.01

        alpha_time +=1

        

        if alpha_time > 5

        {

            alpha_time = 0;

            image_alpha = !image_alpha;

        }

        

        if god_time <= 0 

        {

            god_time = 0;

            hit = false;

            image_alpha = 1;

        }

    }

 

 

히트 상태가 되면 god_time 변수가 열심히 카운트를 하면서 숫자는 초기에 입력한 3초가 되었든 6초가 되었든

 

0이 될때까지 숫자를 깍아 내려갑니다.

 

alpha_time 은 몇초가 되어야 한번 깜빡일지 열심히 숫자를 올려가며 노력하고 있고

 

조건문을 만나보니 5초 이상이 되면 안된답니다.

 

5초 이상이 되버리면 다시 0으로 되돌려 버리고 image_alpha = ! image_alpha 의 경우에는

 

알파값이 0 이면 안보이고 1이면 보이는 상태를 의미하는데 껏다 켰다를 반복하는 코드입니다.

 

즉 5초에 한번씩 점멸이 이루어지는 시스템입니다.

 

 

이제 정해진 무적시간이 다되면, 무적시간을 더이상 초과하지 않도록 0으로 고정하고

 

히트 상태를 해제시킵니다. 

 

그리고 혹시 모를 이미지의 알파값이 0이 되서 끝나는 것을 방지하기 위해서 1로 정의합니다.

 

 

 

코드를 이렇게 작성해 둘 경우에의 장점은 점멸하는 이미지 스프라이트를 따로 쓰지 않아도 되며

 

움직이는 동안 (동작도 설정을 해두었다면) 움직임도 그대로 점멸됩니다.

 

 

같은 코드를 더 짧게 줄이거나 좀더 가볍고 다이나믹한 효과를 아시는 분들은 댓글로

 

제보해주시면 감사하겠습니다.

반응형
facebook twitter kakaoTalk kakaostory naver band shareLink
人気ブログランキングでフォロー