使用此函数,您可以设置sprite应具有的碰撞遮罩的属性。如果选择“自动”(0)或“完整图像”(1)作为边界框模式,则可以将各个边界框值设置为0。但是,对于用户定义的掩码(2),您必须设置这些值。不同的边界框值始终相对于精灵的左上角(与X和Y原点无关),即位置(0,0)。
设置遮罩类型可设置遮罩本身的一般形状,但请注意,在解决冲突时,除矩形遮罩以外的任何遮罩都将需要更多的处理能力,从而导致性能下降。通常,只有在绝对必要的情况下,才应使用矩形以外的遮罩类型。
注意此函数不允许旋转矩形碰撞掩码类型。
可以设置的掩码类型为以下常量之一:
Bounding Box种类(形状)常量 | |
---|---|
常量 | 描述 |
bboxkind_rectangular | A rectangular (non-rotating) rectangle collision mask shape |
bboxkind_ellipse | An elliptical collision mask shape |
bboxkind_diamond | A diamond collision mask shape |
bboxkind_precise | A precise collision mask, where the mask will conform to the non-transparent pixels of the sprite, based on the tolerance value given (see below)) |
最后,容差用于定义遮罩的精确度(与"完整图像"遮罩一起使用时,这不会产生任何效果),容差为 0 意味着遮罩将遵循具有透明度的每个像素超过 0,而其他值将根据像素的透明度改变碰撞蒙版周长。
注意此函数仅适用于位图精灵,不适用于 SWF 或 JSON(Spine) 精灵。
注意此函数仅适用于添加的精灵或重复的精灵,不能直接适用于预制资源。您可以使用函数sprite_duplicate()复制精灵。
sprite_collision_mask(ind, sepmasks, bboxmode, bbleft, bbtop, bbright, bbbottom, kind, tolerance);
参数 | 类型 | 描述 |
---|---|---|
ind | Sprite Asset | 要设置边界框的精灵的索引。 |
sepmasks | Boolean | 是为精灵的每个子图像创建碰撞遮罩(true),还是为所有子图像创建一个遮罩(false)。 |
bboxmode | Real | 使用哪种边界框。0=自动,1=完整映像,2=用户定义。 |
bbleft | Real | 边界框的最大左侧位置。 |
bbtop | Real | 边界框的最大顶部位置。 |
bbright | Real | 边界框的最大右侧位置。 |
bbbottom | Real | 边界框的最大底部位置。 |
kind | Bounding Box种类(形状)常量 | 掩码的种类,常量(参见说明中的表)。 |
tolerance | Real | 指示透明度值中的公差(0=无公差,255=完全公差)。 |
N/A
spr = sprite_add("player_5.png", 16, true, true, 0, 0);
sprite_collision_mask(spr, true, 1, 0, 0, 0, 0, 0, 0);
上面的代码从外部源加载精灵,并将新索引存储在变量“ SPR ”中。然后,代码将新精灵设置为对其每个子图像具有精确的碰撞遮罩。