place_meeting 함수 설명
place_meeting
함수는 특정 위치에서 다른 인스턴스나 객체와의 충돌을 확인할 수 있는 기능을 제공합니다. 이 함수는 충돌을 확인하는 인스턴스의 충돌 마스크를 사용하여 작동합니다. 이 함수를 사용할 때, GameMaker는 인스턴스를 새로운 위치로 이동시키고 충돌을 확인한 후, 다시 원래 위치로 되돌아가 충돌 여부를 알려줍니다.
정확한 충돌을 위해서는 충돌을 확인하는 인스턴스와 확인 대상 객체 모두에서 정밀 충돌 마스크가 선택되어 있어야 합니다. 그렇지 않으면 경계 상자 충돌만 적용됩니다. 충돌한 인스턴스의 ID를 얻고 싶다면 instance_place()
함수를 사용해야 합니다.
문법
place_meeting(x, y, obj);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
x | Real | 확인할 x 위치 |
y | Real | 확인할 y 위치 |
obj | Object | 객체 자산, 객체 인스턴스, 타일 맵 요소 ID, 키워드(all/other) 또는 이 항목들을 포함하는 배열 |
반환 값
- Boolean: 충돌 여부를 나타내는 값
활용 예제
예제 1
if (keyboard_check(vk_left)) {
if (!place_meeting(x - 5, y, obj_wall)) {
x -= 5;
}
}
위 코드는 인스턴스의 왼쪽에 충돌이 없는지 확인하고, 충돌이 없으면 인스턴스를 왼쪽으로 이동시킵니다.
예제 2
var _tilemap = layer_tilemap_get_id("Tiles_1");
if (keyboard_check(vk_left)) {
if (!place_meeting(x - 5, y, [obj_wall, obj_bush, _tilemap])) {
x -= 5;
}
}
이 코드는 이전 예제와 동일한 논리를 사용하지만, 배열을 사용하여 두 종류의 객체(obj_wall, obj_bush)와 "Tiles_1"이라는 타일 레이어의 타일 맵에 대해 충돌을 확인합니다. 타일 맵 ID는 한 번만 가져오면 되므로, 첫 번째 줄을 Create 이벤트로 이동할 수 있습니다.