Класс sound object — различия между версиями
Материал из xrWiki
RayTwitty (обсуждение | вклад) (Новая страница: «=Описание класса из lua_help= <syntaxhighlight lang="cpp">C++ class sound_object { const looped = 1; // зацикленность звука…») |
RayTwitty (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | {{DISPLAYTITLE:Класс sound_object}} | ||
=Описание класса из lua_help= | =Описание класса из lua_help= | ||
<syntaxhighlight lang="cpp">C++ class sound_object { | <syntaxhighlight lang="cpp">C++ class sound_object { | ||
Строка 88: | Строка 89: | ||
'''Описание параметров'''<br/> | '''Описание параметров'''<br/> | ||
<code>obj</code> - игровой объект<br/> | <code>obj</code> - игровой объект<br/> | ||
− | <code>timeout</code> - задержка перед проигрыванием звука<br/> | + | <code>timeout</code> - задержка перед проигрыванием звука (в секундах)<br/> |
<code>position</code> - позиция<br/> | <code>position</code> - позиция<br/> | ||
− | <code>volume</code> - громкость<br/> | + | <code>volume</code> - громкость (в диапазоне от 0.0 до 1.0)<br/> |
<code>flags</code> - набор констант класса sound_object (looped, s2d, s3d) | <code>flags</code> - набор констант класса sound_object (looped, s2d, s3d) | ||
==play== | ==play== | ||
Строка 96: | Строка 97: | ||
function play(obj, timeout); | function play(obj, timeout); | ||
function play(obj, timeout, flags);</syntaxhighlight> | function play(obj, timeout, flags);</syntaxhighlight> | ||
− | + | # методы с одним и двумя аргументами не работают; | |
− | + | # работает только для актора. | |
− | + | Метод годится только для проигрывания звуков в голове актора. | |
==play_at_pos== | ==play_at_pos== | ||
<syntaxhighlight lang="lua">function play_at_pos(obj, position); | <syntaxhighlight lang="lua">function play_at_pos(obj, position); | ||
function play_at_pos(obj, position, timeout); | function play_at_pos(obj, position, timeout); | ||
function play_at_pos(obj, position, timeout, flags);</syntaxhighlight> | function play_at_pos(obj, position, timeout, flags);</syntaxhighlight> | ||
− | + | # для метода с двумя аргументами, второй аргумент - это позиция на уровне. Звук не перемещается вместе с объектом, а остается играть там, где запустили. Работает и для актора и для других объектов; | |
− | + | # метод с тремя аргументами работает как и предыдущий, но появилась возможность установки таймаута; | |
− | + | # особенности метода с четырьмя аргументами: | |
− | + | #* для актора аргумент position - это смещение звука относительно актора. Звук смещается вместе с актором. Также, необходимо использовать флаг s2d (при s3d звука не будет); | |
− | + | #* для других объектов аргумент position является позицией на уровне. В этом случае необходимо использовать флаг s3d. | |
==play_no_feedback== | ==play_no_feedback== | ||
<syntaxhighlight lang="lua">function play_no_feedback(obj, flags, timeout, position, volume);</syntaxhighlight> | <syntaxhighlight lang="lua">function play_no_feedback(obj, flags, timeout, position, volume);</syntaxhighlight> | ||
− | + | # в случае проигрывания в голове актора - параметр position устанавливает смещение относительно актора; звук перемещается вместе с актором; необходимо использовать флаг s2d (при s3d звука не будет); | |
− | + | # в случае проигрывания в пространстве - параметр position устанавливает позицию проигрывания звука на уровне; необходимо использовать флаг s3d; | |
− | + | # если задано циклическое проигрывание звука, то оно не прекратится, даже если перезагрузить уровень; | |
− | + | # поскольку метод без обратной связи, в процессе проигрывания звука нельзя изменить его громкость, позицию, а также оставить проигрывание. | |
− | + | Данный метод подходит для проигрывания не цикличных звуков, для который не требуется дальнейшее изменение параметров. | |
− | + | {| style="background-color: #fffdee;" width="100%" | |
+ | |<span style="color:#172172;">'''Внимание!'''</span> | ||
+ | ---- | ||
+ | При использовании методов ''play'' и ''play_at_pos'' необходимо сохранять созданный звуковой объект во внешнюю локальную переменную, иначе сборщик мусора затрет звук. | ||
+ | |} | ||
− | + | [[Категория:Движок]] |
Текущая версия на 03:20, 11 сентября 2023
Содержание
Описание класса из 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
- громкость (в диапазоне от 0.0 до 1.0)
flags
- набор констант класса sound_object (looped, s2d, s3d)
play[править]
function play(obj);
function play(obj, timeout);
function play(obj, timeout, flags);
- методы с одним и двумя аргументами не работают;
- работает только для актора.
Метод годится только для проигрывания звуков в голове актора.
play_at_pos[править]
function play_at_pos(obj, position);
function play_at_pos(obj, position, timeout);
function play_at_pos(obj, position, timeout, flags);
- для метода с двумя аргументами, второй аргумент - это позиция на уровне. Звук не перемещается вместе с объектом, а остается играть там, где запустили. Работает и для актора и для других объектов;
- метод с тремя аргументами работает как и предыдущий, но появилась возможность установки таймаута;
- особенности метода с четырьмя аргументами:
- для актора аргумент position - это смещение звука относительно актора. Звук смещается вместе с актором. Также, необходимо использовать флаг s2d (при s3d звука не будет);
- для других объектов аргумент position является позицией на уровне. В этом случае необходимо использовать флаг s3d.
play_no_feedback[править]
function play_no_feedback(obj, flags, timeout, position, volume);
- в случае проигрывания в голове актора - параметр position устанавливает смещение относительно актора; звук перемещается вместе с актором; необходимо использовать флаг s2d (при s3d звука не будет);
- в случае проигрывания в пространстве - параметр position устанавливает позицию проигрывания звука на уровне; необходимо использовать флаг s3d;
- если задано циклическое проигрывание звука, то оно не прекратится, даже если перезагрузить уровень;
- поскольку метод без обратной связи, в процессе проигрывания звука нельзя изменить его громкость, позицию, а также оставить проигрывание.
Данный метод подходит для проигрывания не цикличных звуков, для который не требуется дальнейшее изменение параметров.
Внимание!
При использовании методов play и play_at_pos необходимо сохранять созданный звуковой объект во внешнюю локальную переменную, иначе сборщик мусора затрет звук. |