Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужен совет к 2D аркаде! [Delphi]


Страницы:   1 2 3

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. Удачи с рокетой, я парился над паучком, который бы пытался подойти к игроку и взорваться, но у меня нифига не вышло :-(


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо