본문 바로가기
GameMaker강좌[GMS2]/DnD(드래그앤드롭)기초

[게임메이커 강좌-기초][GMS2] 충돌 체크 액션

by 타락카얀 2018. 4. 26.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN


 

 

 

 

 

 

 

 

◈ 충돌 체크 액션

 

 

오브젝트가 특정 위치에 충돌하는지 체크하고 싶을 때가 있지요.

게임메이커 스튜디오에서는 오브젝트가 특정 위치에 충돌하는지 체크할 수 있는 액션은 3종류가 있습니다.

 


(▲ 충돌 체크 액션)


[If Any Object At] 액션은 지정한 위치에 오브젝트가 있는지 체크하는 액션입니다.

 


(▲ If Any Object At 액션)

 

이 액션은 보통 특정 위치에 오브젝트가 충돌하는지 체크할 때 사용합니다.

이 액션은 스프라이트가 지정된 오브젝트라면, 이펙트로 지정된 오브젝트라도 모두 체크하기 때문에,

이점을 유의하고 이벤트를 구성해야 합니다.

 

[If Object At] 액션은 지정한 위치에 특정 오브젝트가 있는지 체크하는 액션입니다.

 


(▲ If Object At 액션)


Target 은 충돌 대상의 id 값을 저장할 때 사용합니다. 이 id 값을 이용하여 충돌한 인스턴스만 제어할 수 있는

것이지요.
예를 들어, 아래와 같이 구성한다면,

 

(▲ Target 사용)


obj_player와 현재 오브젝트가 충돌하게 되면 현재 오브젝트의 위치를 충돌한 obj_player의 (x,y)좌표를 읽어

그 위치로 이동하게 됩니다.

이 액션 또한, 스프라이트가 지정된 오브젝트라면, 이펙트로 지정된 오브젝트라도 모두 체크하기 때문에,

이점을 유의하고 이벤트를 구성해야 합니다.


[If Collision Shape] 액션은 가상의 도형으로 특정 오브젝트와 충돌하는지 체크하는 액션입니다.

 


(▲ If Collison Shape 액션)


Target[If Object At]액션과 마찬가지로 충돌 대상의 id 값을 저장할 때 사용합니다.
Target 은 인스턴스를 생성할 때 사용하는 [Create Instance]액션에서도 볼 수 있습니다.

 


(▲ Create Instance 액션)


인스턴스를 생성했을 때 Target 에 생성한 인스턴스의 id 값을 저장하여, 그 인스턴스만 제어할 수

있도록 합니다.

액션으로 충돌을 체크할 수도 있으나, 지원되는 충돌 체크 액션은 제한적입니다.
그럴 때는 [If Variable] 액션과 충돌 함수를 사용하면 좀 더 다양한 충돌을 체크할 수 있지요.
예를 들어, (x, y+1) 위치에서 솔리드 오브젝트가 있는지 체크하려면, place_free 함수를 사용하여,

 


(▲ If Variable 액션)


이와 같이 조건문을 구성할 수도 있습니다.

 

 

300x250

댓글