physics_particle_group_begin

使用此函数,可以在房间中创建一组粒子。在一组粒子中,创建特定形状所需的粒子将作为一个组一次创建,从而允许您创建具有由所用标志设置的各种属性的模拟软体。"flags" 是 粒子常数 的组合的返回值 (有关这些常数的详细信息,请参阅 函数 physics_particle_create()),而 "groupflags" 是以下 组常数 的组合 (无标志时为 0):

物理粒子组标志常量
常量描述
phy_particle_group_flag_solidA solid particle group prevents other fixtures from lodging inside of it. Should anything penetrate it, the solid particle group pushes the offending fixture back out to its surface, making a a solid particle group possess an especially strong repulsive force.
phy_particle_group_flag_rigidRigid particle groups are ones whose shape does not change, even when they collide with other fixtures.

这些组标志使用位掩码来创建最终输出值,然后选中该值以设置组的不同基本属性 (粒子标志设置的属性除外)。通过使用 "|" 来屏蔽相应的位 (如下例所示),可以不使用任何、一个或两个常量。

除了标志之外,还可以在房间中设置位置以创建粒子组(给定的位置将是完成组的质心)、初始水平和垂直速度以及组的角速度,从而允许您创建移动的旋转组。

您还可以设置组中所有粒子的初始颜色和 Alpha,使用函数 physics_particle_draw() 绘制粒子时使用的值。然后设置组中粒子的内聚强度,这是表示它们 " 粘附 " 彼此的强度的另一种方法。强度可以是介于 0 和 1 之间的值,其中 0 表示无内聚力,1 表示最大内聚力。

最后,必须为粒子组指定类别。该值是一个任意整数值,您可以为每个要具有类似属性的粒子组指定该值,以后可以使用该值为该特定类别以及许多其他类别设置标志。

注意: 您可以对类别使用除 0 之外的任何整数值,该值由模拟保留,用于选择其他函数中的所有类别(如用于绘制)。

请务必注意,调用此函数不会在物理房间中创建组。该函数只是开始该过程并为组设置基础粒子属性。要实际创建粒子组,需要为其指定 形式 ( 请参见下面的示例),然后调用函数 physics_particle_group_end(),此时将创建该粒子组。

注意:设置的粒子类型标志也会影响粒子组的内聚力,例如,如果将粒子标记为水类型(例如),则当粒子组与另一个固定装置碰撞时,粒子组会破裂,而如果将粒子标记为弹簧类型,则粒子组会在碰撞时保持内聚力。

 

语法:

physics_particle_group_begin(flags, groupflags, x, y, ang, xv, yv, ang_velocity, col, alpha, strength, category)

参数类型描述
flags物理粒子标志常量(s)要在粒子上设置的标志。
groupflags物理粒子组标志常量(s)要在粒子组上设置的组标志(请参见顶部的表格)。
xReal用于创建粒子组的 X 位置。
yReal用于创建粒子组的 Y 位置。
angReal创建时旋转组的角度(以度为单位)。
xvReal初始水平速度。
yvReal初始垂直速度。
ang_velocityReal初始角速度。
colColour用于粒子组的基础颜色。
alphaReal用于粒子组的基本 Alpha。
strengthReal设置组中粒子之间的内聚强度。
categoryReal用户定义的组所属的类别。

 

返回:

N/A

 

例子:

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
var groupflags = phy_particle_group_flag_solid | phy_particle_group_flag_rigid;
physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
physics_particle_group_circle(100);
mLastGroup = physics_particle_group_end();

上述代码将粒子类型和粒子组属性的标志存储在变量中,然后使用这些标志在鼠标位置创建半径为 100px 的圆形粒子组。