Система рационального создания спрайтовDelphi , Графика и Игры , DirectX и DelphiX
Оформил: XVeL 1. Аркадный 2. Нерациональный 3. Рациональный 4. Рациональный два Итак способ первый - Аркадный. Его смысл заключается в том, что процедура создания спрайта описывается в коде заранее, а значит параметры спрайта определены ещё до его появления. Вот пример: constructor TPlayerSprite.Create(AParent: TSprite); begin inherited Create(AParent); Image := MyForm.ImageList.Items.Find('PlayerScate'); Width := Image.Width; Height := Image.Height; X := 20; Y := 240-Height div 2; Z := 2; PixelCheck:=true; AnimCount := Image.PatternCount; AnimLooped := True; AnimSpeed := 0/1000; end;Минус сей идеи в том, что каждый раз спрайт будет появлятся в одном и том же месте (в примере по Икс=20 и по Игрик=240 минус половину высоты картинки). Такой способ хорош только для аркад - где главный герой появляется строго в заданном месте. Второй способ - нерациональный. Каждому спрайту придумать свое имя (не путать с классом). Покажу на примере как это: procedure TMainForm.FormCreate(Sender: TObject); var MASHINA : TplayerSprite; //Вот оно имя спрайта - MASHINA begin mashina:=TplayerSprite.create(spriteengine.engine); with TplayerSprite(mashina) do begin Image := MyForm.ImageList.Items.Find('PlayerScate'); Width := Image.Width; Height := Image.Height; X := 20; Y := 240-Height div 2; Z := 2; PixelCheck:=true; AnimCount := Image.PatternCount; AnimLooped := True; AnimSpeed := 0/1000; end; end;Минус этой идеи в том, что спрайтов можно использовать ограниченное количество (только те которые так описаны и имеют свое имя), таким образом чтобы создать 100 спрайтов надо 100 раз написать эту функцию и придумать 100 разных имен! И вот наконец 3-й - Рациональный способ. Его идея состоит в том, чтобы создать TList добавить в него нужное кол-во спайтов и обработать их в нем. Вот пример для создания сотни спрайтов класса TPlayerSprite стоящих в ряд: Procedure TMainForm.StartGameScene; var i:integer; //Переменная счета List : Tlist; begin List:=Tlist.create; for i:=1 to 100 do begin list.add(TPlayerSprite.create(spriteengine.engine));//Создаем спрайт и добавляем его в TList with TplayerSprite(list.items[0]) do //Устанавливаем его характеристики begin Image := MyForm.ImageList.Items.Find('PlayerScate'); Width := Image.Width; Height := Image.Height; X := 20+width*i; //Ставим его на место в ряд по номеру Y := 240-Height div 2; Z := 2; PixelCheck:=true; AnimCount := Image.PatternCount; AnimLooped := True; AnimSpeed := 0/1000; end; list.clear; //Спрайт готов, и в TList он больше не нужен end; list.free; //Спрайты созданы и Tlist нам больше не нужен end;У этого варианта нет минусов. Именно "мутации" этой идеи используются в большинстве проффесиональных игр. Совсем забыл вот ещё четвертый: Type TOrc = class(TImageSprite) //Орк становится подклассом public constructor Create(AParent: TSprite;nx,ny:double); end; //А вот сама процедура: constructor TOrc.Create(AParent: TSprite;nx,ny:double); begin inherited Create(AParent); image:=myform.il.Items.Find('stand'); //Ну или свою картинку width:=image.Width; height:=image.Height; x:=nx; y:=ny; //Тут чего нить свое end;Работает как часы! Орк(в примере) создается командой: Torc.create(spriteengine.engine, *Ваши координаты*); Надеюсь то что написано в этой статье вам поможет. Система рационального создания спрайтов - это способ создания множества спрайтов с уникальными характеристиками, минуя ограничения традиционных способов создания спрайтов. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: DirectX и DelphiX ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |