该函数使用检查的给定标志返回有关物理模拟中每个粒子的各种信息。
使用的缓冲区必须是之前使用函数 buffer_create 创建的,并且应该是 "grow" 类型,其大小大约是预期返回数据的大小。使用下面给出的任意常量设置标志,您可以使用 按位 或 | 创建单个标志值来获取所需信息。
物理粒子数据标志常量 | ||
---|---|---|
常量 | 描述 | 数据类型 |
phy_particle_data_flag_typeflags | The flags value for the particle. | buffer_u32 |
phy_particle_data_flag_position | The x and y position of the particle. | 2 x buffer_f32 |
phy_particle_data_flag_velocity | The horizontal and vertical speed. | 2 x buffer_f32 |
phy_particle_data_flag_colour | The colour and alpha value (hexadecimal). | buffer_u32 |
phy_particle_data_flag_category | The particle category (as defined when you created the particle or group to which it belongs). | buffer_u32 |
physics_particle_get_data(buffer, flags)
参数 | 类型 | 描述 |
---|---|---|
buffer | Buffer | 用于存储数据的 (先前创建的) 缓冲区。 |
flags | 物理粒子数据标志常量(s) | 用于提取有关特定粒子类型的数据的标志。 |
N/A
var count = physics_particle_count();
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_get_data(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);
}
上面的代码获取粒子数,并创建一个带有要检查的数据标志的变量,然后检查房间中是否存在任何粒子。如果存在,将创建一个缓冲区,然后填充粒子数据,该数据将被检查并用于在粒子位置绘制精灵。