![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужен совет к 2D аркаде! [Delphi]
ZAROLF © (2003-12-14 16:49:00)Вообщем дела такие, надо оружие подогнать под выстрел. Мало того в четырёх разных положениях:стоя влево,стоя вправо,сидя влево,сидя вправо.
И все это оказалось не так просто, обычный "angle" всеголишь разворачивал
спрайт, а спрайт этот анимированый.
И вот под каждое положение нужно чтото подобное:
if isButton1 in MainForm.DXInput.States then //здесь типа выстрел
begin
with TShoot2.Create(Engine) do
begin
PixelCheck := True;
Image := MainForm.ImageList.Items.Find('Shoot2');
X := Self.X+Self.Width -40;
Y := Self.Y+Self.Height -38;
Width := Image.Width;
Height := Image.Height;
end;
end;
constructor TShoot2.Create(AParent: TSprite);
begin
inherited Create(AParent);
Image := MainForm.ImageList.Items.Find('Shoot2');
Width := Image.Width;
Height := Image.Height;
end;
Procedure TShoot2.DoMove(MoveCount: Integer);
Begin
inherited DoMove(MoveCount);
if y<= 0 then Dead;
if y>= 480 then Dead;
x:=x+5;
if m mod 1 = 0 then
if AnimCount<5 then inc(AnimCount) else AnimCount:=0;
AnimPos:= AnimCount;
end;
SoulSilver (2003-12-29 11:31:00) [1]Sory, I don't know. Совет банален: см. Документацию
ZAROLF (2003-12-25 18:28:00) [2]SoulSilver © (25.12.03 17:58) [43]
>Это как?
-----------------------------------------------------------------
Ладно забыли, всё равно не получается.
Лучше подскажи как проиграть "wav" файл в bass 2.0, мне для музона надо.
Вот здесь пример из Demo bass, немогу разабраться
procedure TForm1.Button10Click(Sender: TObject);
var
f: PChar;
begin
if not OpenDialog3.Execute then Exit;
f := PChar(OpenDialog3.FileName);
sams[samc] := BASS_SampleLoad(FALSE, f, 0, 0, 3, BASS_SAMPLE_OVER_POS);
if sams[samc] <> 0 then
begin
ListBox2.Items.Add(OpenDialog3.FileName);
Inc(samc);
end;
end;
procedure TForm1.Button9Click(Sender: TObject);
var
i: Integer;
begin
i := ListBox2.ItemIndex;
if i >= 0 then
if not BASS_SamplePlayEx(sams[i], 0, -1, 50, Random(200)-100, False) = 0 then
end;
SoulSilver (2003-12-25 17:58:00) [3]Это как?
ZAROLF (2003-12-25 08:44:00) [4]SoulSilver © (25.12.03 08:33) [41]
>Да-да я тоже когда-то на это натыкался, смысл в том, что в >идеале спрайт игрока должен по Ширине и Высоте совпадать со >спрайтом блока, вот т.е. если Блок 32*32, то и Плеер должен >быть 32*32.
-----------------------------------------------------------------
Я вот думаю плееру надо перед ногами сделать както невидимый пиксель, чтобы он уперался им а не стволом. Но тогда свобода движения резко гасится. Что думаешь на этот счёт.
SoulSilver (2003-12-25 08:33:00) [5]Да-да я тоже когда-то на это натыкался, смысл в том, что в идеале спрайт игрока должен по Ширине и Высоте совпадать со спрайтом блока, вот т.е. если Блок 32*32, то и Плеер должен быть 32*32.
ZAROLF (2003-12-24 15:08:00) [6]SoulSilver © (24.12.03 14:19) [39]
>Снизить скорости пуль и задать размер всем картинкам, типа
>Image := MainForm.ImageList.Items.Find('bullet');
>Width := 4;
>Height := 4;
-----------------------------------------------------------------
И ещё один баг, плеер проходит сквозь стены в таких местах где нельзя упереться стволом(краем спрайта) в стены.
Вот взгляни в демке, когда спускаешся по ступенькам и заверни влево.
А здесь плотность плеера:
//влево Direct:= -1
if (Map[trunc((Player.X+30)/32)-1,trunc((Player.Y+30)/32)]<5)then
//вправо Direct:= 1
if (Map[trunc((Player.X)/32)+1,trunc((Player.Y+30)/32)]<5)then
SoulSilver (2003-12-24 14:19:00) [7]Снизить скорости пуль и задать размер всем картинкам, типа
Image := MainForm.ImageList.Items.Find('bullet');
Width := 4;
Height := 4;
У меня такой проблемы не было, но я думаю, что таким образом её решить можно
ZAROLF (2003-12-23 15:48:00) [8]Бета1:Тестинг
Чтото у меня в некоторых местах пули сквозь стены пролетают, незнаешь как стены сделать более плотными.
//Вот пимер обычных блоков
if Map[j,i]=5 then Image:=ImageList.Items.Find('Block1');
Collisioned := true;
x:=j*32+16;
y:= i*32+16;
SoulSilver (2003-12-22 16:04:00) [9]У тебя класс TEnergy, в var'e опиши
Energy: TEnergy;и вprocedure TRubilnik1Left.DoCollision(Sprite: TSprite; var Done: Boolean);пиши ужеEnergy.Dead;
ZAROLF (2003-12-22 15:56:00) [10]>SoulSilver © (22.12.03 14:08) [34]
>В Collision Player'а:
>if Sprite is TРубильник then
>Источник энергии.Dead;
-----------------------------------------------------------------
Вообщем у меня так, но всё равно вылетает при компиляции.
Procedure TRubilnik1Left.DoMove(MoveCount: Integer);
begin
PixelCheck := True;
Image := MainForm.ImageList.Items.Find('rubilnik1_left');
Width := Image.Width;
Height := Image.Height;
Collision;
end;
destructor TRubilnik1Left.Destroy;
begin
inherited Destroy;
end;
procedure TRubilnik1Left.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TPlayer then
begin
if AnimCount<0 then inc(AnimCount) else AnimCount:=1;
AnimPos:= AnimCount;
TEnergy1(Sprite).dead; //хотя без этого всё идёт, рубильник опускается.
end;
end;
Что ни так?
dRake (2003-12-22 14:10:00) [11]По поводу BASS, для дельфей существует отличный набор пасников
http://un4seen.com, возможности либы используют на все 100!
Тут тебе и 3Д звук, и поддержка основный форматов, и создание отдельных потоков, и многое, многое другое ;) лично у меня
вся звуковая система на BASS, и тебе тоже рекомендую
SoulSilver (2003-12-22 14:08:00) [12]В Collision Player'а:
if Sprite is TРубильник then
Источник энергии.Dead;
ZAROLF (2003-12-22 13:55:00) [13]Предположим у меня в игре есть рубильник и источник энергии.
И вот касаясь плеером этого рубильника(if Sprite is TPlayer then) надо убрать(dead;) источник энергии(тоже спрайт).
Как проще это сделать через "docollision".
SoulSilver (2003-12-21 16:13:00) [14]В Delphi есть MediaPlayer, он всё проигрывает, у меня играет mp3 - это 100%. Bass введи в Yandex и найдешь, это очень известная библиотека.
ZAROLF (2003-12-21 14:21:00) [15]SoulSilver © (21.12.03 09:52) [28]
Я использую стандартный MediaPlayer, в принципе он хорош, но если хочешь наворотов, то используй Bass. MediaPlayer не тормозит игру, может загружать и (*.mp3) и (*.mid), а на паучка я уже забил, вместо него 10 видов оружия, 11 супер способностей :-))
-----------------------------------------------------------------
Чтото у меня стандартный MediaPlayer проигрывает только (*.mid),
а (*.wav) упорно отказывается.
Да, а где взять Bass. MediaPlayer.
SoulSilver (2003-12-21 13:44:00) [16]Она что-то вроде Soldat, если играл, а так - Мочилово.
ZAROLF (2003-12-21 10:50:00) [17]А у тебя аркада имеет какое напавление, бродилка или чемпионат по
мордобою(типа Worms).
SoulSilver (2003-12-21 09:52:00) [18]2 ZAROLF ©
Я использую стандартный MediaPlayer, в принципе он хорош, но если хочешь наворотов, то используй Bass. MediaPlayer не тормозит игру, может загружать и (*.mp3) и (*.mid), а на паучка я уже забил, вместо него 10 видов оружия, 11 супер способностей :-))
ZAROLF (2003-12-20 17:37:00) [19]SoulSilver © (20.12.03 16:39) [26]
>я парился над паучком, который бы пытался подойти к игроку и >взорваться, но у меня нифига не вышло :-(
-----------------------------------------------------------------
Подробнее можешь описать обстановку с пауком, возможно помогу.
-----------------------------------------------------------------
2.
Вот дошёл до реализации звука и музыки (в своей игре),и тогда я понял - ну геморой этот Delphix. При каком то звуке выстрела мой
CPU:Cel400,128mb,TNT16Mb,SB16/64AWE превращается в нечто тооооооооормоооооооозящее. Ой-ё да о музыке можно забыть.
Может посоветуешь мне другой обработчик звука.
SoulSilver (2003-12-20 16:39:00) [20]2 ZAROLF ©:Надо будет взглянут на твою игру, может это конкурент NFK. Удачи с рокетой, я парился над паучком, который бы пытался подойти к игроку и взорваться, но у меня нифига не вышло :-(