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

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

DoCollision B DelphiX [Delphi, DelphiX, Windows]


Страницы:   1 2 3 4 5 6 7 8 9 10

Аццкий_рыцарь:) ©   (2005-12-29 14:07:00) 

когда спрйт анимируется, то DoCollision происходит только на первом его кадре. А мне нужно что б на всех кадрах происходило колижн ХЕЛП!


JUS   (2006-01-08 00:40:00) [121]


> архив поврежден :(

быть не может, ты каким раром распаковывал? я паковал, версией 3.20.
а у тебя какая?


Аццкий_рыцарь:)   (2006-01-07 23:44:00) [122]

2Jus кстати, можешь, если не сложно еще раз игру выложить? а то там архив поврежден :(


JUS   (2006-01-07 23:31:00) [123]

Координаты выбирай из массива циклом.


Аццкий_рыцарь:)   (2006-01-07 23:00:00) [124]

2Cash и 2Jus ну смотрите, если прорисовывать постояно картинку мертвого монстра в DXтаймере, это нормально с одним монстром... А если монстров 200? то постоянно надо рисовать каждого из них на DxDraw?? это ж склько координат ?!


JUS   (2006-01-07 20:48:00) [125]


> Аццкий_рыцарь:)   (07.01.06 15:46) [63]

дааа уж,....эх


Cash   (2006-01-07 19:01:00) [126]

Аццкий_рыцарь:)   (07.01.06 15:46) [63]:
Ужас!!! Тебя кто этому научил ??? (Я бы этому дяде с большими ушами ...) :)))
Ну зачем такой изврат? Заготовь две картинки. Первую - живого мостра,
вторую - мертвого. Потом, при смерти монстра говори:
"Монстр.Картинка:=Мертвый", а после реанимации:
"Монстр.Картинка:=Живой".
(Не, если охота оставить PixelCheck, то согласен, надо бы рисовать,
но у меня в этой ситуяции родилась другая мысля: "все кадры
распихать по разным картинкам. А вместо анимации по кадрам
делать анимацию по картинкам.")


Аццкий_рыцарь:)   (2006-01-07 15:46:00) [127]

ЛЮДИ! вы не очень внимательно прочитали мой последний топ! там я рисовал не на Dxdraw, а именно изменял рисунок своего спрайта, и динамически во время работы игры рисовал В нем а не НА нем. Тоесть, пусть даже поверхность обновляется, но спрайт-то будет рисоваться.  Что можете сказать поэтому поводу?


JUS   (2006-01-07 10:05:00) [128]

Если ты хочеш рисовать на канве только лиш из за токо чтоб как ты думаеш сэкономить память не рисуя там спрайт(вместо рисований), то это зря. если спрайт не анимированый, то от него и тормозов практически совсем совсем никаких. и фпс не куда не упадет.

Вот, посмотри мою игру недоделку. там у меня тока в панели состояния 39 спрайтов, 3 из них анимированные.
http://www.webfile.ru/619176


JUS   (2006-01-07 09:55:00) [129]


> Аццкий_рыцарь:)   (06.01.06 21:43) [58]
> 2JUS АААААА - это эмоции :)
>
> а у самого спрайта есть канвас? можно на image спрайта рисовать?
>

Можно. У тебя каждый раз прорисовывается спрайт, а твои рисования на спрайте рисуются один раз, ты не успеваеш рассмотреть, т.к. экран опять отчищается и рисует там опять спрайт, а твои рисульки больше не рисуются. Сделай чтоб они рисовались в DXTimer1:

procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw.CanDraw then exit;
DXInput.Update;
DXDraw.Surface.Fill(0);
 DXSpriteEngine.Dead;
 DXSpriteEngine.Move(1000);
 DXSpriteEngine.Draw;
 With DXDraw.Surface.Canvas Do
   Begin
     Brush.Style := bsClear;
     Font.Color := clFuchsia;
     Font.Size := 16;
     Textout(10, 50, ' FPS: ' + inttostr(DXTimer.FrameRate));

<...тут рисуй...>

end;
   Release;
   end;
 DXDraw.Flip;
end;


Cash   (2006-01-07 09:34:00) [130]

Аццкий_рыцарь:)   (06.01.06 22:45) [59]:
Ну, есть у тебя кнопка, ну, по клику по кнопке ты на DxDraw рисуешь
(замечу, один раз). Ну наверняк у тебя пр этом таймер работает,
который делает DxDraw.Flip.
Ты просто не успеваешь постмотреть картинку, ее перекрывают.
А если таймера нет, тогда надо по клику кнопки сказать DxDraw
дравнуться и флипнуться. :)


Аццкий_рыцарь:)   (2006-01-06 22:45:00) [131]

Вот смотрите, например я хочу чтоб по клику на кнопку поверх имеющегося image спрайта grass рисовалось то, что находится в DXDIB1.DIB:

procedure TForm1.DXDraw1FinalizeSurface(Sender: TObject);
begin
FSurface.Free; FSurface := nil;
end;

procedure TForm1.DXDraw1InitializeSurface(Sender: TObject);
begin
FSurface := TDirectDrawSurface.Create(DXDraw1.DDraw);
end;

procedure TForm1.DXDraw1RestoreSurface(Sender: TObject);
begin
 FSurface.LoadFromGraphic(DXDIB1.DIB);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
tgrass(sprite).Image.Draw(form1.DXDraw1.Surface, 100, 100,100 );
end;

и нифига не рисует :(

что тут неравильно?


Аццкий_рыцарь:)   (2006-01-06 21:43:00) [132]

2JUS АААААА - это эмоции :)

а у самого спрайта есть канвас? можно на image спрайта рисовать?


JUS   (2006-01-06 21:29:00) [133]


> Что такое ААААААААААА ;-(
> Всё правильно делаеш(почти). А 65 ФПС, че мало? убавь таймер
> и ускорь скорость анимации и фпс будет более-менее постоянной.
>  Ваще и 35-ти хватило бы, как минимум.

Там чёто еще помоему надо сделать или нет, поправьте если я не прав!


JUS   (2006-01-06 21:27:00) [134]


> Аццкий_рыцарь:)   (06.01.06 15:20) [55]
> 2Cash ОДНАКО!

ААААА сразу что, не догадался? Чем больше анимированных спрайтов выводиш сразу, тем больше тормоза. Обычные спрайты почти не тормозят. И я тебе говорил, что память надо отчищать, тебе по***.


> Аццкий_рыцарь:)   (06.01.06 02:37) [52]
> 2JUS ААААААААА! Я СОЗДАЛ МАСИВОМ! И, КОГДА Я ВЫВОЖУ ДАЖЕ
> 200 СПРАЙТОВ, ТО ФПС ~ 65 !!! ААА! КАК Я РАД! АА! ПАСИБА!
>

Что такое ААААААААААА;-(
Всё правильно делаеш(почти). А 65 ФПС, че мало? убавь таймер и ускорь скорость анимации и фпс будет более-менее постоянной. Ваще и 35-ти хватило бы, как минимум.


Аццкий_рыцарь:)   (2006-01-06 15:20:00) [135]

2Cash ОДНАКО!


Cash   (2006-01-06 09:02:00) [136]

Аццкий_рыцарь:)   (05.01.06 22:37) [50]:
Как уже заметил коллега JUS, используй if, организовывай нужную
часть кода, как блок подпрограммы внутри if оператора.

Аццкий_рыцарь:)   (06.01.06 04:49) [53]:
Ну дак, тыж каждый раз перерисовываешь все пространство.

... потому что еще один спрайти не пойдет на пользу ...
Так, прошу прошения, а постоянные вычищения памяти и
следующие за ними выделения пойдут, скажешь, на пользу?

Пускай у твоего спрайта будет два состояния, первое:
хорошенький такой бодринький монстрячок, который
весело так бегает за юзером и наровит типнуть за ******. :)))
Второе состояние монстряка - это когда злой дядя юзер
шмальнул из своей валыны по этому веселому монстрячку,
и тот обидился и решил сдохнуть, тобиш лежил и не шивелится. :)))
(прикольно получилось) :D
А когда приходит время добавить еще одного монстрячка, то
мы берем самого залежавшегося, меняем ему состояние на
живое, и ставим по другим координатам.

Вот это будет выигрыш в производительности!


Аццкий_рыцарь:)   (2006-01-06 04:49:00) [137]

Я пытался через канвас выводить, но когда монстряка рисуешь на бекграунде, то он выводится и сразу же пропадает... наверное это из-за того, что дроу постоянно обновляет поверхность для рисования... И как мне быть? :(

Кстати, я не хочу чтоб этот мертвый монстряк был спрайтом (так я уже сделал), потому что еще один спрайти не пойдет на пользу производительности.


Аццкий_рыцарь:)   (2006-01-06 02:37:00) [138]

2JUS ААААААААА! Я СОЗДАЛ МАСИВОМ! И, КОГДА Я ВЫВОЖУ ДАЖЕ 200 СПРАЙТОВ, ТО ФПС ~ 65 !!! ААА! КАК Я РАД! АА! ПАСИБА!


JUS   (2006-01-06 00:04:00) [139]


> Кстати, у меня goto  использовалось не для повторения какой-
> то процедуры, а для пропускания одельной части кода

Ну и не правильно все равно. для этого можно использовать условие if, если чё то пропускать такой то код.
> 2cyborg разве когда включить пиксельное столкновение, то
> повысится производительность? О_о

нет, ты не правильно понял


Аццкий_рыцарь:)   (2006-01-05 22:37:00) [140]

2cyborg разве когда включить пиксельное столкновение, то повысится производительность? О_о

Кстати, у меня goto  использовалось не для повторения какой-то процедуры, а для пропускания одельной части кода


Страницы:   1 2 3 4 5 6 7 8 9 10

Наверх

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