Показать сообщение отдельно
Старый 20.05.2010, 22:25   #52
cosmos
Новичок
 
Аватар для cosmos
 
Регистрация: 18.11.2007
Адрес: 51 регион
Сообщений: 21
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
cosmos стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от Gregory_777 Посмотреть сообщение
Сегодня добавлю ешё рандомное воспроизведение звука движения по "бесстыковому" пути и перестука на скоростях выше 30 км/ч, чтобы перестук не задалбывал.
Да, работа скрипта с длинными звуками нереальна, а короткие, своей зацикленностью всю реалистичность сводят на нет.
Решил поступить так. Взял длинный звуковой файл соответсвующий определенной скорости и разрезал его на равные части. Так поступил и с другими. Звуки обозвал soundp_i, где p - № набора звуков определенной скорости, а i - № файла из набора.
Задача: воспроизведение звуков из набора друг за другом (ну, пока скорость позволяет, иначе будет "играть" другой набор), т.к. рандомно "играет" не всегда убедительно из-за несовпадений.
Скрипт работает, звуки воспроизводятся, правда надо еще все это настроить, чтоб без запинки и задоринки, а так, результат меня порадовал.
Единственное что напрягает, так это большая кипа звуковых файлов в папке sound. А вот сам фаргмент кода (поток), тестовый, сырой, но рабочий:
Код:
thread void SoundLooper(void)
{
    while(true)
        {   
        float speed=GetVelocity();       
        if (speed > 0.2 and speed <= 2.8)
                {
                p = 1;
                i = 0;
                sound = true;
                count = true;
                }
        if (speed > 2.8 and speed <= 5.6)
                {
                p = 1;
                count = true;
                if (i >= 19)
                i = 1; 
                else
                {
                sound = true;
                i++;
                }
                }
        if (speed > 5.6 and speed <= 8.4)
                {
                p = 2;
                if (count == true or i == 20)
                {
                count = false;
                i = 1;
                }else{
                sound = true;
                i++;
                //Interface.Print(i);
                }
                }
        if (speed > 8.4 and speed <= 14.0)
                {
                p = 3;
                if (count == false or i == 16)
                {
                count = true;
                i = 0;
                }else{
                sound = true;
                i++;
                }
                }
        if (speed > 14.0 and speed <= 17.0)
                {
                p = 4;
                if (count == true or i == 16)
                {
                count = false;
                i = 0;
                }else{
                sound = true;
                i++;
                }
                }
        if (speed > 17.0 and speed <= 26.0)
                {
                p = 5;
                if (count == false or i == 22)
                {
                count = true;
                i = 0;
                }else{
                sound = true;
                i++;
                }
                }
        if (speed > 26.0)
                {
                p = 6;
                if (count == true or i == 17)
                {
                count = false;
                i = 0;
                }else{
                sound = true;
                i++;
                }
                }
        if (sound == true and p > 0)
        Sleep(World.PlaySound(asset,"sound/sound" + p + "_" + i + ".wav",1.0,10.0,100.0,me,"a.bog0")-0.5);
Сразу говорю, он недоделанный, но идея может быть кому и пригодится.
__________________
Поезд - дух бродяжий и связь времен.

Последний раз редактировалось cosmos; 20.05.2010 в 22:28.
cosmos вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА