imcrazyhoudini 218 Опубликовано 1 Августа Поделиться Опубликовано 1 Августа @monk интересный способ конечно... Тогда такой вопрос: как можно сделать, чтобы начался играться звук после определённого инфопоршня и заканчивался так же? Причём звук не в голове, а в определённом месте. По информации с вики - sr_sound активируется только когда игрок находится в рестрикторе, а ph_sound в ЧН судя по всему не работает. Ссылка на комментарий
Norman Eisenherz 354 Опубликовано 1 Августа Поделиться Опубликовано 1 Августа sound_obj:play_at_pos(obj, pos, delay, mode), потом sound_obj:stop() потребуется создать объект для привязки позиции Ссылка на комментарий
Kirgudu 1323 Опубликовано 1 Августа Поделиться Опубликовано 1 Августа 49 минут назад, Norman Eisenherz сказал: потребуется создать объект для привязки позиции Вроде как не обязательно. Можно запустить от всегда имеющегося актора, но при этом задать фиксированные координаты, отличные от его позиции, чтобы звучало со стороны. 1 Ссылка на комментарий
Norman Eisenherz 354 Опубликовано 1 Августа Поделиться Опубликовано 1 Августа Подтверждаю. То, что звук не смещается вслед за объектом, в данном случае только в плюс. Ссылка на комментарий
imcrazyhoudini 218 Опубликовано 4 Августа Поделиться Опубликовано 4 Августа Так, создал такое: Скрытый текст local slowmo_snd_off = sound_object("anomaly\\steam") function sound_start() slowmo_snd_off:play_at_pos(db.actor, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s2d) end function sound_spot() slowmo_snd_off:stop() end Но, увы - нет звука от позиции. Сам инфопоршень выдаётся, ибо вкинул туда выдачу месседжа на ПДА. Что не так? Ссылка на комментарий
Kirgudu 1323 Опубликовано 4 Августа Поделиться Опубликовано 4 Августа 34 минуты назад, imcrazyhoudini сказал: play_at_pos(db.actor, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s2d) Если в качестве первого аргумента используется db.actor, то вектор во втором аргументе - это не абсолютная позиция, а смещение относительно актора. Получается, ты запускаешь звук очень далеко от своей текущей позиции, он просто не слышен. Более того, звук ещё и будет смещаться синхронно с актором, сохраняя всё ту же относительную позицию. Чтобы запустить звук в конкретной точке, нужно привязать его к любому другому объекту, кроме db.actor, указать абсолютные координаты (это сейчас правильно) и использовать флаг sound_object.s3d. Ссылка на комментарий
imcrazyhoudini 218 Опубликовано 5 Августа Поделиться Опубликовано 5 Августа @Kirgudu Скрытый текст local slowmo_snd_off = sound_object("anomaly\\steam") function sound_start() slowmo_snd_off:play_at_pos(nil, vector():set(-248.8643, 10.7530, 207.8199), 0, sound_object.s3d) end function sound_spot() slowmo_snd_off:stop() end Итог тот же. Ссылка на комментарий
Norman Eisenherz 354 Опубликовано 5 Августа Поделиться Опубликовано 5 Августа Как минимум, sound_object.looped никуда не смещается и слышен при приближении. Ссылка на комментарий
Kirgudu 1323 Опубликовано 5 Августа Поделиться Опубликовано 5 Августа 2 часа назад, imcrazyhoudini сказал: play_at_pos(nil, nil откуда здесь взялось? Ссылка на комментарий
imcrazyhoudini 218 Опубликовано 5 Августа Поделиться Опубликовано 5 Августа @Kirgudu а такое не подойдёт разве? А можно тогда пример как играть звук если возьмём рестриктор как объект? Ссылка на комментарий
Kirgudu 1323 Опубликовано 5 Августа Поделиться Опубликовано 5 Августа @imcrazyhoudini нет, я же написал, что нужен объект. Актор или любой другой, но нужен. Для демонстрации сделал на чистой игре нижеследующие правки. В логике рестриктора mar_space_restrictor_start_sim.ltx (расположен примерно в межкомнатном проёме между Лебедевым и тактиком) добавил функцию запуска звука при появлении в области действия рестриктора, если первая обучающая миссия ещё не пройдена. [logic] active = sr_idle [sr_idle] on_actor_inside = {+mar_intro_go_to_marsh_done} sr_idle@end_section %=start_sim%, sr_idle@sound %=start_sound% ; добавил здесь ; и здесь зациклил обратно через 30 секунд [sr_idle@sound] on_timer = 30000 | sr_idle [sr_idle@end_section] Саму функцию добавил в xr_effects.script function start_sound(actor, obj) -- здесь obj - наш рестриктор "mar_space_restrictor_start_sim" local snd = sound_object("items\\guitar\\guitar_5") -- взял гитару как длительно звучащую, но подойдёт, разумеется, любой существующий звук if snd then snd:play_at_pos(obj, vector():set(-185, 0.5, -301), 1, sound_object.s3d) end end Указанные в функции координаты соответствуют точке около входа к Суслову, немного ближе к забору. Итак, пошёл к тактику, вошёл в зону рестриктора, чтобы активировать звук, при этом поначалу ничего не услышал. Быстро побежал к Суслову, на полпути к указанным координатам гитара стала слышна, а когда дошёл до места, её громкость достигла максимума. Замечу, что гитара стала различима буквально метров за 10 от точки звучания, не раньше. Это работающий пример запуска звука с привязкой к определённому объекту (не актору) и фиксированным на текущем уровне координатам. 1 1 Ссылка на комментарий
imcrazyhoudini 218 Опубликовано 9 Августа Поделиться Опубликовано 9 Августа 1. Как поправить это зависание собак на одном месте? 2. При удалении контролёра скриптом звук играет в голове и дальше. Как править? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти