기본적으로 게임메이커 스튜디오 시리즈가 자주 변하면서 자꾸 함수의 기능이나 사용법을 미묘하게 바꿔버려
계속해서 새로 공부해야 하거나 헷갈리게 만드는 경우가 있습니다.
특히 게임메이커 스튜디오 2의 2.3 대규모 업데이트가 이뤄지면서 기존 작업 중이던 게임들이 정상적으로
작동하지 않거나 버그나 오류가 엄청나게 벌어지면서 또한번 저의 취미생활에 고통을 주었습니다.
어쨌거나 작업을 하면서 너무나 시간을 많이 손해를 보아 이 내용에 대해 공유를 하고자 글을 남깁니다.
스위치를 켜면 블록이 보이고 끄면 사라지는 블록 작업
먼저 스위치가 필요합니다. 스위치로 사용할 이미지는 누르기 전과 누른 후의 이미지 2장이 필요하며
저는 이렇게 설정해두었습니다.
1. 스위치 작업
그 다음 오브젝트를 생성 후,
스위치에 사용할 변수들을 정의해야 하는데 초보자들의 경우는 감이 전혀 안 오겠지만 기본적으로
이미지가 프레임(1장 이상의 움직임을 가진 그림)이 있을 경우 게임메이커에서는 자동적으로 재생을 해버리기에
계속 움직이는 상태로 보여집니다.
그래서 크리에이트 코드에서 아래와 같이 작성합니다.
///@desc switch object init variable
image_speed = 0;
image_index = 0;
switch_push = false;
이미지의 스피드를 0으로 설정하여 움직이지 못하는 상태로 만들어줍니다.
그 이후 이미지 인덱스(몇 번째 프레임을 사용할 것인지의 여부)를 설정. 첫 번째 프레임을 고정적으로 보여줄 것이기에
0으로 설정합니다.
그다음에는 스위치 푸시라는 변수명을 정해줬고 그것을 오프로 먼저 설정했습니다.
///@desc step event switch push
if (place_meeting(x+15, y, obj_player)) or (place_meeting(x-15, y, obj_player))
{
if (keybord_check_pressed(vk_enter))
{
switch_push = !switch_push;
}
}
if (switch_push = true)
{
image_speed = 0;
image_index = 1;
}else
{
image_speed = 0;
image_index = 0;
}
이번에는 스텝 이벤트로 가서 스위치에 플레이어가 다가갔을 때 엔터를 입력하면 온/오프가 되도록 작성한 코드입니다.
x + 15 (오른쪽 15픽셀 정도에서 만나면)는 여유 있게 충돌 체크를 하기 위해서 썼으며 왼쪽도 마찬가지입니다.
그다음 게임메이커 스튜디오의 기본 함수인 키보드 체크를 통해 이프 문을 만들었고,
이후에는 스위치 푸시 변수를 누를 때마다 온/오프가 되도록 작성하였습니다. 변수명 =! 변수명은 true/false를 계속
반환해주기에 외워두면 좋은 코드입니다.
아래의 코드도 설명이 필요 없을 만큼 간단한 스위치가 트루가 되면 이미지를 바꿔주고 그렇지 않으면 다시 원래대로
돌려놓는 코드입니다.
2. 블록의 작업
블럭의 작업에서 상당히 고통스러웠던 이유에 대해서는 앞서 설명대로 게임메이커 스튜디오가 자꾸 변덕을 부려서
어떤 버전에서는 solid 함수가 아주 쉽고 간단하게 작동을 하다가 이번에는 되지 않아 절망하고 있었지만,
외국의 포럼에서 알게 된 사실은 스프라이트가 있고 없고 가 더 중요하다는 사실을 알게 되었습니다. (내가 똥 멍청이 었음)
1. 오브젝트를 만들되 스프라이트를 처음에는 설정하지 않을 것!
보이지 않는 블록에서는 처음 세팅에서 스프라이트 설정을 제외시켜야 합니다.
크리에이션 코드에서는 그저 스위치 오브젝트의 온/오프 값을 받아올 변수 정도만 있으면 되기에,
create -
on_off = false;
이것으로 충분하며 스텝 이벤트에서 많은 일이 벌어집니다.
///@desc invisible block step event
if (instance_exists(obj_switch))
{
on_off = obj_switch.switch_push;
}
if (on_off = true)
{
visible = true;
sprite_index = spr_secret_block;
mask_index = spr_secret_block;
}else
{
visible = false;
sprite_index = noone;
mask_index = noone;
solid = false;
}
먼저 초기에 만든 스위치 오브젝트가 있는지의 여부를 체크하고 있다면 보이지 않는 블록의 오브젝트에서 설정한
on_off 변수에 스위치 푸시 변수의 값을 받아옵니다.
그것으로 온이 되면 이미지를 보여주고 스프라이트를 이제야 세팅합니다.
그게 아닐 경우에는 이미지를 보여주는 것을 오프 시키고 스프라이트나 마스크 값을 모두 해제하는 것으로
정상 작동이 됩니다.
'게임제작 > 강좌 ' 카테고리의 다른 글
게임메이커 스튜디오에서 한글폰트 설정하는 방법 (0) | 2020.11.06 |
---|---|
[GML]기초 라이프 아이콘 및 게이지 HP를 인터페이스에 표시하기 (0) | 2020.11.01 |
[포토샵]화면을 돌려가며 작업하는 로테이션 안될때 설정방법 (6) | 2020.07.30 |
[게임메이커]게임메이커 스튜디오 크래쉬 이슈 해결방법 (0) | 2019.05.24 |
[GML]게임 프로그래밍 코드를 작성하는 요령과 게임의 개념의 이해 (0) | 2019.05.23 |