В общем запуск звука:
$объект.startSound("название звука", SND_CHANNEL_ANY,0); И остановка звука
$объект.stopSound(SND_CHANNEL_ANY, 0);
Для звука нужно выбрать канал, бывают:
SND_CHANNEL_ANY - любой канал (или все сразу)
SND_CHANNEL_VOICE
SND_CHANNEL_VOICE2
SND_CHANNEL_BODY
SND_CHANNEL_BODY2
SND_CHANNEL_BODY3
SND_CHANNEL_WEAPON
SND_CHANNEL_ITEM
SND_CHANNEL_HEART
SND_CHANNEL_PDA
SND_CHANNEL_DEMONIC
Звук закрепится на том энтити, для которого его запустили. Соответственно в качестве $объекта должен быть крутящийся диск.
В общем примерно так:
Code
float discspeed;
float brk;
void spinup()
{
float targetspeed = 200;
float stime;
if (discspeed >= targetspeed) return;
brk = 1;
$func_mover_1.stopSound( SND_CHANNEL_ANY, 0 );
stime = $func_mover_1.startSound( "snd_spinup", SND_CHANNEL_ANY, 0 );
if (stime <= 0) stime = 1;
stime = (targetspeed - discspeed) * GAME_FRAMETIME / stime;
while (discspeed < targetspeed)
{
$func_mover_1.rotate('0 1 0' * discspeed);
discspeed += stime;
if (brk != 1)
{
break;
}
sys.waitFrame();
}
$func_mover_1.startSound( "snd_spin", SND_CHANNEL_ANY, 0 );
$func_mover_1.rotate('0 1 0' * targetspeed);
}
void spindown()
{
float stime;
if (discspeed <= 0) return;
brk = -1;
$func_mover_1.stopSound( SND_CHANNEL_ANY, 0 );
stime = $func_mover_1.startSound( "snd_spindown", SND_CHANNEL_ANY, 0 );
if (stime <= 0) stime = 1;
stime = discspeed * GAME_FRAMETIME / stime;
while (discspeed > 0)
{
$func_mover_1.rotate('0 1 0' * discspeed);
discspeed -= stime;
if (brk != -1)
{
break;
}
sys.waitFrame();
}
if (discspeed <= 0)
{
$func_mover_1.stopRotating();
$func_mover_1.stopSound( SND_CHANNEL_ANY, 0 );
}
}
spinup - разгон диска
spindown - торможение
У мувера должны быть звуки:
snd_spinup - звук разгона
snd_spin - звук вращения
snd_spindown - звук торможения
float targetspeed = 200; - скорость вращения