
戈多是否有一种方法来计算声音与物体碰撞的时间,或者当声音与物体碰撞时声音有多低?例如,在下面的图片中,在地板中间有一个AudioStreamPlayer3D,在地板上的不同位置有三个黄色立方体。是否有可能让这三个立方体确定AudioStreamPlayer3d发出的噪音是什么时候/有多大,这样声音才能被三角化?同样,最远的幼崽可能听不到,而其他两只却能听到。
发布于 2022-04-03 18:14:28
不,这里没有。
如果您正在进行人工智能,我将建议您不要使用这种方法,而要向Area__提供资源。然而,在…上回答这个问题
您可以复制戈多用于计算代码(来源)中的卷的逻辑:
float AudioStreamPlayer3D::_get_attenuation_db(float p_distance) const {
float att = 0;
switch (attenuation_model) {
case ATTENUATION_INVERSE_DISTANCE: {
att = Math::linear2db(1.0 / ((p_distance / unit_size) + CMP_EPSILON));
} break;
case ATTENUATION_INVERSE_SQUARE_DISTANCE: {
float d = (p_distance / unit_size);
d *= d;
att = Math::linear2db(1.0 / (d + CMP_EPSILON));
} break;
case ATTENUATION_LOGARITHMIC: {
att = -20 * Math::log(p_distance / unit_size + CMP_EPSILON);
} break;
case ATTENUATION_DISABLED:
break;
default: {
ERR_PRINT("Unknown attenuation type");
break;
}
}
att += unit_db;
if (att > max_db) {
att = max_db;
}
return att;
}https://stackoverflow.com/questions/71728510
复制相似问题