rectangle_in_triangle

此函数将检查您定义的矩形区域,以查看它是否完全不在目标边界内,或者它是否只是接触定义的三角形区域。如果它们完全不接触,则函数将返回0;如果源完全在目标范围内,则返回1;如果它们只是重叠,则返回2。下图说明了这一点:

Rectangle triangle collision example

语法:

rectangle_in_triangle(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2, dx3, dy3);

参数类型描述
sx1Real源矩形左侧的x坐标。
sy1Real源矩形顶边的y坐标。
sx2Real源矩形右侧的x坐标。
sy2Real源矩形底侧的y坐标。
x1Real要检查的三角形第一侧的x坐标。
y1Real要检查的三角形第一侧的y坐标。
x2Real要检查的三角形第二条边的x坐标。
y2Real要检查的三角形第二条边的y坐标。
x3Real要检查的三角形第三条边的x坐标。
y3Real要检查的三角形第三条边的y坐标。

 

返回:

Real

 

例子:

var inst = instance_nearest(x, y, obj_Player);
if (instance_exists(inst))
{
    var x1 = x + lengthdir_x(100, image_angle - 45);
    var y1 = y + lengthdir_y(100, image_angle - 45);
    var x2 = x + lengthdir_x(100, image_angle + 45);
    var y2 = y + lengthdir_y(100, image_angle + 45);
    if (rectangle_in_triangle(inst.bbox_left, inst.bbox_top, inst.bbox_right, inst.bbox_bottom, x, y, x1, y1, x2, y2) == 1)
    {
        can_see = true;
    }
}

上述代码使用矩形in_triangle函数作为"视锥"来检查"obj_player"的实例。如果完整边界框在给定的三角形区域内,则会将变量设置为true