![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DoCollision B DelphiX [Delphi, DelphiX, Windows]
Аццкий_рыцарь:) © (2005-12-29 14:07:00)
Страницы: < 1 2 3 4 5 6 7 8 9 10 >
когда спрйт анимируется, то DoCollision происходит только на первом его кадре. А мне нужно что б на всех кадрах происходило колижн ХЕЛП!
Аццкий_рыцарь:) (2006-01-10 13:48:00) [101]4) А КАК?????? МОЖЕШЬ ПОЛНЫЙ КОД НАПИСАТЬ?
Cash (2006-01-10 09:44:00) [102]Аццкий_рыцарь:) (09.01.06 18:44) [87]:
3) Поправочка, мой таймер к Омеге, родной от Омеги он абсолютно другой.
Мой тоже с DxTimer-ом не родим.
Таймер, этож абсолютно левая штука. Бери хоть из закладки System,
тока он для игр негоден.
Моя переделка таймера очень похожа на PowerTimer из Power Draw 3.
У него нет interval, рисует всегда с макс. скоростью,
есть ProcessFPS, частота в секунду сробатывания события OnProcess,
то есть перемещений. три флага: CanRealTime, CanRender, CanProcess,
и три события к ним OnRealTime (раз в сек.), OmRender (макс. возм. скорость), OnProcess (ProcessFPS раз в сек.)
4) Вот и я про что говорю. Оставь монстров 200 - 250, а трупы бери и рисуй
на бэкграунде.
Аццкий_рыцарь:) (2006-01-09 18:44:00) [103]1) Игру посмотрел :) прикольно. Внатуре много спрайтов и неглючит. Но, например если играть в мою игру 30 мин, и постоянно валить монстров, то на бекграунде надо будет постоянно по 2000 монстров , у каждого из которых свои координаты и все остальное :(
2) 2 это типа на английсrом "to" , тоесть если дословно перевести 2Jus - To Jus - Обращаюсь к Jus :)
3) А таймер от омеги имеет все те же функции что и ДелфиХ таймер? и он будет работать так же с DXDraw?
4) Ну смотрите. Зачем мне грузить память постоянно всякими лишними монстрами, создавать трупов, если на рисунке бекграунда можно сразу нарисовать монстра 1 раз и никогда больше к нему не возвращаться?
Cash (2006-01-09 14:18:00) [104]Аццкий_рыцарь:) (09.01.06 00:59) [78]:
... когда прорисовываешь постоянно через ДХтаймер то приложение ...
А DxTimer вообще вещь мерзопакостная и очень нехорошая!
Найди набор Power Draw 3, бери таймер от туда.
Или, если не хоца, могу дать свой аналог для Омеги.
Установишь его (он встанет на закладку Omega), и работай
дальше!
JUS (2006-01-09 12:48:00) [105]Если долго качается можеш на моём "сайте":) скачать, там быстрее.
http://www.sidorov-vadim.narod.ru
Ещё можеш редактор карт скачать и посмотреть скриншоты:)
JUS (2006-01-09 12:45:00) [106]Аццкий_рыцарь:) ты ссылку то посмотрел или нет!? http://www.webfile.ru/732575
JUS (2006-01-09 12:43:00) [107]
> > Аццкий_рыцарь:) (09.01.06 00:59) [78]
> > 2 ВСЕ :)
А чё значит "2" перед "ВСЕ"?
> Аццкий_рыцарь:) (07.01.06 23:44) [68]
> 2Jus кстати, можешь, если не сложно еще раз игру выложить?
> а то там архив поврежден :(
И "2Jus"?
JUS (2006-01-09 10:25:00) [108]
> Аццкий_рыцарь:) (09.01.06 02:13) [80]
> 2. Почему? Кто сказал?
Это всё равно что есть суп вилкой:)
Cash (2006-01-09 08:55:00) [109]Аццкий_рыцарь:) (09.01.06 02:13) [80]:
2: Это ни кто не говорил. Но это так есть!
При всем этом, такое ни кто не запрещал!
Аццкий_рыцарь:) (2006-01-09 02:13:00) [110]1. Означает что я обращаюсь ко всем тем, кто принимал участие в обсуждении данного топа :)
2. Почему? Кто сказал?
JUS (2006-01-09 01:41:00) [111]
> Аццкий_рыцарь:) (09.01.06 00:59) [78]
> 2 ВСЕ :)
>
> когда прорисовываешь постоянно через ДХтаймер то приложение
> начинает УЖАСНО "углючить" :( фпс где-то 25. А вот если
> в Image спрайта рисовать... тогда делфи будет пофиг что
> там, а сам спрайт он без глюков рисует
1.Что такое ВСЕ :) ?
2.Рисовать в спрайте - извращение :)
Аццкий_рыцарь:) (2006-01-09 00:59:00) [112]2 ВСЕ :)
когда прорисовываешь постоянно через ДХтаймер то приложение начинает УЖАСНО "углючить" :( фпс где-то 25. А вот если в Image спрайта рисовать... тогда делфи будет пофиг что там, а сам спрайт он без глюков рисует
JUS (2006-01-08 21:42:00) [113]
> Аццкий_рыцарь:) (07.01.06 23:44) [68]
> 2Jus кстати, можешь, если не сложно еще раз игру выложить?
> а то там архив поврежден :(
Ну чё скачалась? смотрел?
Cash (2006-01-08 19:01:00) [114]JUS © (08.01.06 12:02) [74]:
Увидев этот пост, усомнился, что Restore есть! (для меня это норма)
Поподробнее про Restore:
С англиского я бы перевел, как "Сбросить" или "Обновить".
Есть такая вещь, называется она DxImageList.Items.LoadFromFile('');.
Кто нибудь смтрел внутрь? Там в конце в самом написано Restore;,
то есть Self{DxImageList.Items}.Reastore;! А там внутри написано:
For <bla bla bla> do Items[i].Restore;
То есть просто при загрузке файлика происходит Restore каждому
итему (Item)! А внутри самой этой Restore; всего лишь обновление
данных для вывода в формате DirectDraw; !!!! Если нарисовать
что нибудь и не вызвать Restore, ничего не произойдет!
Аццкий_рыцарь:) (08.01.06 17:48) [75]:
BgImage - это типа (я же не знаю как это у тебя называется) твой
спрайт, который ты используешь в качестве заднего фона.
Сокращение от BackgroundImage.
Ну а про Restore я уже более или менее "не" :) понятно объяснил.
Аццкий_рыцарь:) (2006-01-08 17:48:00) [115]Что такое BgImage.restore, и с чеми его едят? О_о
JUS (2006-01-08 12:02:00) [116]Первый раз про Restore слышу. Поподробнее можеш?)
Cash (2006-01-08 09:26:00) [117]Аццкий_рыцарь:) (07.01.06 23:00) [66]:
... монстров 200? то постоянно надо рисовать каждого ...
Надо надо, если тебе это надо, то надо.
Так, товарищь! У тебя есть куча спрайтов. И DxSpriteEngine.
У тебя есть DxImageList. Картинки монстра в DxImageList
находится, так? Причем, и мертвого, и живого, так?
Монстров ты создаешь, и (наверное) картинку им ставишь в конструкторе,
или после создания уже говоришь:
?
Monster.Image:=DxImageList.Items.Find('Monster');
А что тебе помешает сделать два указателя на картинки для монстра?
?
Monster.Image:=DxImageList.Items.Find('Monster');
Monster.DeathImage:=DxImageList.Items.Find('DeathMonster');
Делаешь у монстра булевский флаг IsLive. И поцедуры DoMove,DoDraw и
DoCollision подчиняешь этому флагу.
(В конструкторе, естественно, флаг надо поднять)
Procedure TMonster.DoMove(MoveCount: Integer);
begin
if IsLive then begin
//<Живем и радуемся жизни> :)
end;
end;
Procedure TMonster.DoDraw;
begin
if IsLive then Image.Draw(<.....>)
else DeathImage.Draw(<.......>);
end;
Procedure TMonster.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if IsLive then begin
// <Проверяем столкновения>
end;
end;
Как результат, тебе не надо никуда ничего рисовать.
Если спрайт мертв, то он не будет анимироваться,
процедуры DoMove и DoCollision будуть просто пролетать.
При этом ты и остальные будут видеть мертвый спрайт.
И когда надо, то не создавать нового, а снова поднять
флаг жизни (IsLive) спрайту и переместить его на новые координаты.
-----------------------------------------------------------------------------
ЗЫ: А если охота, чтоб через некоторое время все действо проходило на
горе трупов монстров, то заготовь одну большую картинку заднего фона,
рисуй на ней спрайт мертвого монстра, и делай BgImage.Restore.
тогда появится картинка мертвого на фоне всех остальных.
(Блин, и как я сразу про Restore не вспомнил, без него изменения на
битмапе недействительны)
Аццкий_рыцарь:) (2006-01-08 02:21:00) [118]Блин, у меня проблема с инетом :(скорость 800 байт в секунду может завтра станет нормальной...
JUS (2006-01-08 01:11:00) [119]Кстати весит он 1.7мб
JUS (2006-01-08 01:10:00) [120]Разместил SFX-архив (exe-шный), там точно RAR не нужен:-)
http://www.webfile.ru/732575