Изучаем DelphiX (Часть 7)
Изучаем DelphiX (Часть 7) Изучаем DelphiX. Часть 7: Звуки и музыка. Автор: Влад Энгельгардт "Звуки и музыка создают атмосферу в игре" Здравствуйте дорогие мои читатели, сегодня мы займёмся воспроизведением звуков и музыки в игре. Займёмся в начале звуками. В этом уроке рассмотрим два способа воспроизведения звука. За основу я решил взять седьмую часть. Теперь рассмотрим компоненты, с помощью которых мы будем осуществлять воспроизведение музыки. DXSound - в общем через него звук и будет воспроизводится. DXWave - необходим для хранения, и воспроизведения одного звука. DXWaveList -В нём можно хранить, и воспроизводить звуки через DXSound. Внимание, напомню, что звуки можно загружать в игру только в формате Wav или Dxw. Ну, так что, приступим. Для начала кидаем компонент DxSound на форму. Затем кидаем DXWaveList и в закладке Properties напротив DXSound выбираем наш саунд :). Теперь давайте загрузим наш первый звук. Это будет естественно выстрел. Он будет у нас вот таким: fa.wav. Теперь щёлкаем по нашему компоненту DxWaveList, и находим Items с удовольствием нажимаем, и далее всё также, как мы работали с ImageList. Добавим звук и назовем его Fa. Теперь по идеи стреляют у нас оба класса и игрок и плеер, так что добавляем это в процедуры DoMove. При событии создания патрона. Так должно выглядеть для каждого класса. Для Playerone:
begin
if lngpolet-oldlngpolet>=250 then
begin
Inc(lngpolet);
with TPlayerFa.Create(Engine) do
begin
form1.DXWaveList1.Items.Find('fa').Play(true);
Image := form1.DXImageList1.Items.Find('pul');
X:=self.X+cos256(ang)*55;
Y:=self.y+sin256(ang)*55;
anglefa:=ang;
oldlngpolet := lngpolet;
end;
end;
end;
begin
if lngpolet-oldlngpolet>=250 then
begin
Inc(lngpolet);
with TPlayerFa.Create(Engine) do
begin
form1.DXWaveList1.Items.Find('fa').Play(true);
Image := form1.DXImageList1.Items.Find('pul');
X:=self.X+cos256(ang2)*55;
Y:=self.y+sin256(ang2)*55;
anglefa:=ang2;
oldlngpolet := lngpolet;
end;
fa:=false;
end;
end;
begin
inherited DoMove(MoveCount);
angle := anglefa;
x:=x+cos256(angle)*8;
y:=y+sin256(angle)*8;
pulxpl := trunc(x); //передаём переменной значение Х патрона
CurrentPanpl := -20000 * pulxpl div form1.DXDraw1.ClientWidth + 10000; // И так всё //понятно
form1.dxwavelist1.Items.Find('fa').pan := CurrentPanpl; //Присваиваем значение звуку
if X>= 800 then Dead;
if y>= 600 then Dead;
if X<= 0 then Dead;
if y<= 0 then Dead;
Collision;
end;
Отправить комментарий