使用此函数,您可以设置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 ”中。然后,代码将新精灵设置为对其每个子图像具有精确的碰撞遮罩。