Collision_rectangle uses the first four arguments (x1,y1,x2,y2) to define an area within the current room and then checks to see if any object that is defined by the "obj" argument is in collision with that area. This collision can be checked as precise or not, and you may also choose to check for the instance running the code itself or not. Consider this image:
Here, the instance in the middle is using a collision rectangle to check for ball objects. Now, the blue ones do not have a precise bounding box and as you can see, even if the sprite is not actually touching the rectangle, the collision will still happen (even if you set the precise option in the function to true) as the bounding box of that sprite over-laps the collision_rectangle. On the other hand, the green balls will only be considered in collision if the actual sprite over-laps the rectangle. Remember, for precise collisions to be considered both the object sprite and the collision function must have precise marked as on. It should also be noted that the return value of the function can be the id of any one of the instances considered to be in collision.
collision_rectangle(x1, y1, x2, y2, obj, prec, notme);
Argument | Description |
---|---|
x1 | The x coordinate of the left side of the rectangle to check. |
y1 | The y coordinate of the top side of the rectangle to check. |
x2 | The x coordinate of the right side of the rectangle to check. |
y2 | The y coordinate of the bottom side of the rectangle to check. |
obj | The object to check for instance collisions. |
prec | Whether the check is based on precise collisions (true, which is slower) or its bounding box in general (false, faster). |
notme | Whether the calling instance, if relevant, should be excluded (true) or not (false). |
Instance id or noone
var inst;
inst = collision_rectangle(50, 50, 200, 100, obj_Ball, false,
true);
if inst != noone
{
with (inst) instance_destroy();
}
This short code uses collision_rectangle check an area in the room from 50x, 50y (top left of the rectangle) to 200x, 200y (bottom right of the rectangle) for an instance of an object called "obj_ball". It stores the return value in a temporary variable which is then checked to see if that value is an instance id, or the keyword noone. If it is not noone then it uses the stored instance id to destroy the object.