GAME MAKER 강좌
KAYAN
◈ 충돌 체크 함수
게임메이커에서 충돌을 체크할 수 있는 함수는 여러가지가 있습니다.
(▲ 충돌 체크)
함수마다 각각 특징이 있어서 쓰임새에 따라 다양한 이벤트를 구성할 수 있습니다.
먼저, 충돌 체크시 상대 ID 값을 반환하는 함수들입니다.
◎ instance_place(x,y,obj) ◎ instance_position(x,y,obj) |
instance_place 함수는 가장 일반적으로 사용하는 함수로 현재 인스턴스가 (x,y)위치에 있을 때,
지정된 인스턴스(obj)와 충돌시 상대 인스턴스의 id 를 반환하는 함수입니다.
◎ instance_place(x,y,obj) |
이 함수는 기본적으로 현재 오브젝트에 지정한 충돌 마스크와 상대 오브젝트에 지정한 충돌 마스크 설정
기준으로 충돌을 체크합니다.
(▲ 체크하려면 충돌 마스크가 필요)
따라서 체크하고자 하는 오브젝트 간에 어느 쪽이라도 기본 스프라이트 이미지를 지정하지 않았거나,
마스크를 별도로 지정하지 않았다면 체크할 수 없습니다.
이 함수를 사용한다면 체크가 필요한 오브젝트에 스프라이트 이미지를 지정하거나 충돌 마스크 설정을
해주어야 체크할 수 있어요.
(▲ 충돌 마스크 설정)
※ [참고] : 오브젝트에 기본 스프라이트 이미지를 지정하고, 충돌 마스크 설정을 지정하지 않은 경우,
오브젝트에 지정한 기본 스프라이트 이미지를 기본 마스크로 인식합니다.
◎ instance_position(x,y,obj) |
이 함수는 지정된 (x,y)위치에 지정한 인스턴스(obj)가 있다면, 충돌한 인스턴스의 id 를 반환하는 함수입니다.
instance_place 와 비슷해 보이지만, 다른 점은 instance_place 는 마스크와 마스크가 충돌 했을 때
상대 id 를 반환하는 것이고, instance_position 은 지정된 위치와 그 인스턴스의 마스크가 충돌 했을 때,
그 인스턴스의 id를 반환하는 것입니다.
즉, instance_place는 마스크와 마스크, instance_position은 점(위치)과 마스크의 충돌이 다릅니다.
(▲ instance_position 함수 )
비슷한 함수로 collision_point 가 있습니다.
◈ place 함수
아래의 함수들은 현재 오브젝트의 위치에 따라 true(1) 또는 false(0)를 반환하는 함수입니다.
◎ place_free(x,y) ◎ place_empty(x,y) ◎ place_meeting(x,y,obj) |
일반적으로 충돌 마스크와 충돌 마스크의 충돌을 체크한다고 생각하시면 됩니다.
(▲체크하려면 충돌 마스크가 필요)
아래 함수는 현재 인스턴스가 (x,y) 위치에 있을 때, solid 오브젝트와 충돌하고 있지 않는지를 체크하는 함수입니다.
◎ place_free(x,y) |
충돌하지 않으면(solid 오브젝트가 없으면) true 를 반환하고, 충돌 할 경우(solid 오브젝트가 있으면), false 를 반환합니다.
보통 플랫포머에서 바닥과 충돌하는지를 체크할 때 사용하기도 합니다.
(▲ solid 체크)
◎ place_empty(x,y) |
이 함수는 현재 인스턴스가 (x,y) 위치에 있을 때, 그 어떤 인스턴스와도 충돌하고 있지 않는지를 체크하는 함수입니다.
충돌하지 않으면(마스크를 가진 오브젝트가 없으면) true 를 반환하고, 충돌 할 경우(마스크를 가진 오브젝트가 있으면), false 를 반환합니다.
place_free 함수와 place_empty 함수는 체크 방식이 비슷하지만, place_free 는 solid 오브젝트만 체크하고,
place_empty 함수는 마스크 설정을 가진 모든 오브젝트를 체크한다는 것이 다릅니다.
◎ place_meeting(x,y,obj) |
이 함수는 현재 인스턴스가 (x,y) 위치에 있을 때, 지정한 오브젝트(obj)와 충돌하는지를 체크하는 함수입니다.
충돌 할 경우 true 를 반환하고, 충돌하지 않으면 false 를 반환합니다.
◎ place_snapped(hsnap,vsnap) |
이 함수는 현재 인스턴스의 (x,y) 좌표가 지정한 격자(hsnap, vsnap)에 위치하고 있는지를 반환합니다.
격자에 위치하고 있다면 true, 그렇지 않다면 false 를 반환합니다.
(▲ 격자에 있는지 체크)
다만, (16,16) 의 격자를 설정했다면, (x,y) 좌표가 정확히 (16,16) 격자에 맞춰져야 충돌로 인정됩니다.
◈ position 함수
아래의 함수들은 오브젝트가 지정한 위치에 있는지에 따라 true(1) 또는 false(0) 를 반환하는 함수입니다.
◎ position_empty(x,y) ◎ position_meeting(x,y,obj) |
일반적으로 점(x,y 위치)과 마스크의 충돌을 체크한다고 생각하시면 됩니다.
얼핏 보기에 place_ 함수와 비슷해보이지만, place_ 함수는 현재 오브젝트 기준으로 다른 오브젝트를
체크하는 방식이고, 이 position_ 함수는 점(x,y 위치) 기준으로 다른 오브젝트를 체크하는 것이 다릅니다.
(▲체크하려면 충돌 마스크가 필요)
◎ position_empty(x,y) |
이 함수는 지정한 (x,y) 위치에 그 어떤 인스턴스라도 없는지를 체크하는 함수입니다.
인스턴스가 없다면 true, 있다면 false 를 반환합니다.
◎ position_meeting(x,y,obj) |
이 함수는 지정한 (x,y) 위치에 지정한 오브젝트(obj)가 있는지를 체크하는 함수입니다.
지정한 오브젝트(obj)가 그 위치에 있다면 true를, 없을 경우는 false 를 반환합니다.
아래 함수는 바로 실행되는 함수입니다.
◎ position_destroy(x,y) |
이 함수는 현재 인스턴스가 (x,y) 위치에 있을 때, 현재 인스턴스를 즉시 파기하는 것으로,
if position_meeting(x,y,self){instance_destroy( );} |
위 코드와 같은 형식의 함수입니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2] 가상의 충돌 체크 (0) | 2023.02.15 |
---|---|
[게임메이커강좌-기초][GMS2] collision 충돌 체크 함수 (0) | 2023.02.14 |
[게임메이커 강좌-기초][GMS2] 충돌 체크와 충돌 이벤트 (0) | 2023.02.13 |
[게임메이커강좌-기초][GMS2] 텍스트 파일 작성 (0) | 2023.02.13 |
[게임메이커 강좌-기초][GMS2] 3D 사운드 재생 (0) | 2023.01.31 |
댓글