sprite_collision_mask


语法:

sprite_collision_mask(ind, sepmasks, bboxmode, bbleft, bbtop, bbright, bbbottom, kind, tolerance);

参数 描述
ind 将被被设置边界框的精灵的索引。
sepmasks 为每一个次级图像分别设置碰撞遮罩则设为 (true),为所有次级图像设置同一个碰撞遮罩则设为 (false).
bboxmode 使用哪种边界框。0为自动,1为覆盖全图像,2为自定义。
bbleft 边界框的左侧最大位置。
bbtop 边界框的顶部最大位置。
bbright 边界框的右侧最大位置。
bbbottom 边界框的底部最大位置。
kind The kind of mask, a constant (see the table in the description).
tolerance 指示透明容忍度。0为不容忍,1为全部容忍,具体请看描述。


返回

N/A(无返回值)


描述

With this function you can set the properties of the collision mask that a sprite should have. 如果你选择自动或覆盖全图像,那么其它的边界框的参数可以被设置为0。. 如果你选择自定义遮罩,那么你必须设置这些值。不同的边界框值总是以精灵的左上角为相对位置(0,0)。

如果你将遮罩面设为方形以外的其它的形状,那么需要更多的资源来计算它,降低性能。所以一般情况下,应该将遮罩种类设为方形。

NOTE: This function does not permit the rotated rectangle collision mask kind.


The kind of mask that can be set will be one of the following constants:

常量 描述
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的地区(即不透明的地方)。设为X遮盖将会覆盖透明度超过X的地方。

注意此函数只对 位图 精灵有用,并且对SWF或JSON(骨骼)精灵不起作用。
作用: 此函数只对复制出来的精灵起作用。而 是直接对预制资源起作用。you can duplicate sprites using the function sprite_duplicate.


例如:

spr = sprite_add("player_5.png", 16, true, true, 0, 0);
sprite_collision_mask(spr, true, 1, 0, 0, 0, 0, 0, 0);

上面这段代码将会从外部资源加载精灵,并将它的索引存储在"spr"变量中。然后将精确的遮罩应用到每个次级图像上。.