physics_particle_group_get_data

此函数使用检查的给定标志返回有关物理模拟中一组粒子的各种信息。组索引 (其 ID) 是由函数 physical_article_group_end 返回的索引,并且所使用的缓冲区必须是之前使用函数 buffer_create 创建的。它应该是 "grow" 类型,大小大约是预期返回数据的大小。标志本身使用下面给出的常量进行设置,您可以使用 按位 | 创建单个标志值来获取所需信息。

常量描述数据类型
phy_particle_data_flag_typeflagsThe flags value for the particle.buffer_u32
phy_particle_data_flag_positionThe x and y position of the particle.2 x buffer_f32
phy_particle_data_flag_velocityThe horizontal and vertical speed.2 x buffer_f32
phy_particle_data_flag_colourThe colour and alpha value (hexadecimal).buffer_f32
phy_particle_data_flag_categoryThe particle category (as defined when you created the group to which it belongs).buffer_u32

 

语法:

physics_particle_group_get_data(group, buffer, flags)

参数类型描述
groupPhysics Particle Group ID要从中获取数据的粒子组的组索引 (ID)。
bufferBuffer用于存储数据的 (先前创建的) 缓冲区。
flagsPhysics Particle Data Flag Constant(s)用于提取有关特定粒子类型的数据的标志。

 

返回:

N/A

 

例子:

var count = physics_particle_group_count(gp);
var flags = phy_particle_data_flag_position | phy_particle_data_flag_colour;
if (count > 0)
{
    var buffer = buffer_create(count * 12, buffer_grow, 4);
    physics_particle_group_get_data(gp, buffer, flags);
    for (var n = 0; n < count; n++;)
    {
        var xx = buffer_read(buffer, buffer_f32);
        var yy = buffer_read(buffer, buffer_f32);
        var argb = buffer_read(buffer, buffer_u32);
        var alpha = (argb >> 24) & 255;
        draw_sprite_ext(sprBlob, 0, xx, yy, 1, 1, 0, c_green, alpha);
    }
    buffer_delete(buffer);
}

上面的代码获取由变量 gp 索引的组中每个粒子的位置和速度,将缓冲区数据存储在多个变量中,然后使用它在每个粒子的位置绘制精灵群组。