Класс sound object
Содержание
Описание класса из lua_help
C++ class sound_object {
const looped = 1; // зацикленность звука
const s2d = 2; // играть в голове актора
const s3d = 0; // играть в пространстве
property frequency; // частота
property max_distance; // максимальная дистанция слышимости
property min_distance; // минимальная дистанция слышимости
property volume; // громкость
sound_object (string); // создание звукового объекта, в аргументе - путь до звукового файла
sound_object (string, enum ESoundTypes); // тоже самое, что и предыдущее + установка типа звука
function set_position(const vector&); // установить позицию звука
function stop_deffered(); // отложенная остановка
function get_position() const; // получить позицию звука
function stop(); // остановка
function length(); // получить длительность звука
function playing() const; // играет ли звук в данный момент
function play_no_feedback(game_object*, number, number, vector, number);
function play_at_pos(game_object*, const vector&);
function play_at_pos(game_object*, const vector&, number);
function play_at_pos(game_object*, const vector&, number, number);
function play(game_object*);
function play(game_object*, number);
function play(game_object*, number, number);
};
Описание ESoundTypes из движка игры
enum ESoundTypes
{
SOUND_TYPE_NO_SOUND = 0x0,
SOUND_TYPE_WEAPON = 0x80000000,
SOUND_TYPE_ITEM = 0x40000000,
SOUND_TYPE_MONSTER = 0x20000000,
SOUND_TYPE_ANOMALY = 0x10000000,
SOUND_TYPE_WORLD = 0x8000000,
SOUND_TYPE_PICKING_UP = 0x4000000,
SOUND_TYPE_DROPPING = 0x2000000,
SOUND_TYPE_HIDING = 0x1000000,
SOUND_TYPE_TAKING = 0x800000,
SOUND_TYPE_USING = 0x400000,
SOUND_TYPE_SHOOTING = 0x200000,
SOUND_TYPE_EMPTY_CLICKING = 0x100000,
SOUND_TYPE_BULLET_HIT = 0x80000,
SOUND_TYPE_RECHARGING = 0x40000,
SOUND_TYPE_DYING = 0x20000,
SOUND_TYPE_INJURING = 0x10000,
SOUND_TYPE_STEP = 0x8000,
SOUND_TYPE_TALKING = 0x4000,
SOUND_TYPE_ATTACKING = 0x2000,
SOUND_TYPE_EATING = 0x1000,
SOUND_TYPE_IDLE = 0x800,
SOUND_TYPE_OBJECT_BREAKING = 0x400,
SOUND_TYPE_OBJECT_COLLIDING = 0x200,
SOUND_TYPE_OBJECT_EXPLODING = 0x100,
SOUND_TYPE_AMBIENT = 0x80,
SOUND_TYPE_ITEM_PICKING_UP = 0x44000000,
SOUND_TYPE_ITEM_DROPPING = 0x42000000,
SOUND_TYPE_ITEM_HIDING = 0x41000000,
SOUND_TYPE_ITEM_TAKING = 0x40800000,
SOUND_TYPE_ITEM_USING = 0x40400000,
SOUND_TYPE_WEAPON_SHOOTING = 0x80200000,
SOUND_TYPE_WEAPON_EMPTY_CLICKING = 0x80100000,
SOUND_TYPE_WEAPON_BULLET_HIT = 0x80080000,
SOUND_TYPE_WEAPON_RECHARGING = 0x80040000,
SOUND_TYPE_MONSTER_DYING = 0x20020000,
SOUND_TYPE_MONSTER_INJURING = 0x20010000,
SOUND_TYPE_MONSTER_STEP = 0x20008000,
SOUND_TYPE_MONSTER_TALKING = 0x20004000,
SOUND_TYPE_MONSTER_ATTACKING = 0x20002000,
SOUND_TYPE_MONSTER_EATING = 0x20001000,
SOUND_TYPE_ANOMALY_IDLE = 0x10000800,
SOUND_TYPE_WORLD_OBJECT_BREAKING = 0x8000400,
SOUND_TYPE_WORLD_OBJECT_COLLIDING = 0x8000200,
SOUND_TYPE_WORLD_OBJECT_EXPLODING = 0x8000100,
SOUND_TYPE_WORLD_AMBIENT = 0x8000080,
SOUND_TYPE_WEAPON_PISTOL = 0x80000000,
SOUND_TYPE_WEAPON_GUN = 0x80000000,
SOUND_TYPE_WEAPON_SUBMACHINEGUN = 0x80000000,
SOUND_TYPE_WEAPON_MACHINEGUN = 0x80000000,
SOUND_TYPE_WEAPON_SNIPERRIFLE = 0x80000000,
SOUND_TYPE_WEAPON_GRENADELAUNCHER = 0x80000000,
SOUND_TYPE_WEAPON_ROCKETLAUNCHER = 0x80000000,
};
Методы проигрывания звуков
Описание параметров
obj
- игровой объект
timeout
- задержка перед проигрыванием звука
position
- позиция
volume
- громкость
flags
- набор констант класса sound_object (looped, s2d, s3d)
play
function play(obj);
function play(obj, timeout);
function play(obj, timeout, flags);
1) Методы с одним и двумя аргументами не работают.
2) Работает только для актора.
По сути, этот метод годится только для проигрывания звуков в голове актора.
play_at_pos
function play_at_pos(obj, position);
function play_at_pos(obj, position, timeout);
function play_at_pos(obj, position, timeout, flags);
1) Для метода с двумя аргументами, второй аргумент - это позиция на уровне. Звук не перемещается вместе с объектом, а остается играть там, где запустили. Работает и для актора и для других объектов.
2) Метод с тремя аргументами работает как и предыдущий, но появилась возможность установки таймаута.
3) Особенности метода с четырьмя аргументами:
- Для актора аргумент position - это смещение звука относительно актора. Звук смещается вместе с актором. Также, необходимо использовать флаг s2d (при s3d звука не будет).
- Для других объектов аргумент position является позицией на уровне. В этом случае необходимо использовать флаг s3d.
play_no_feedback
function play_no_feedback(obj, flags, timeout, position, volume);
1) Для актора аргумент position - это смещение звука относительно актора. Звук перемещается вместе с актором. Также, необходимо использовать флаг s2d (при s3d звука не будет).
2) Для других объектов аргумент position является позицией на уровне. В этом случае необходимо использовать флаг s3d.
3) При наличии looped, звук продолжает циклически играть и после перезагрузки сейва.
4) Громкость задается в диапазоне от 0.0 до 1.0.
5) Для этого метода не работает дальнейшее изменение каких-либо параметров, в т.ч. и остановка
Фактически не подходит для проигрывания зацикленных звуков.
Совет: при использовании методов play и play_at_pos - сохраняйте созданный звуковой объект во внешнюю локальную переменную, иначе уборщик затрет ваш звук в игре.