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

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

TBackGroundSprite В DelphiX... [Delphi, DelphiX, Windows]


Аццкий_рыцарь:) ©   (2006-01-24 01:10:00) 

Люди! я немогу понять как в играх делают, чтоб вместе со спрайтом бэкграунда передвигались все остальные спрайти (чтоб ихние х, у были как бы прикрепленные к бэкграунду), а главный персонаж двигался сам по себе?

и еще о нем...

допустим у меня есть картинка бэкграунда 128х128 и хочу сделать тайловую карту. Я задаю
SetMapSize(1,1);
tile:=true;

а как мне задать высоту и ширину карты? А то оно само непонятно почему берет определенное количество этих картинок :(


Аццкий_рыцарь:)   (2006-01-27 01:36:00) [1]

Так если  через некоторое время на полу валяется полно трупов, то впечатления будут круче :) Игроки не смотрят же на игру со стороны кода, а смотрят на неё со стороны мяса :)


PAVIA   (2006-01-27 00:56:00) [2]

Просто можно в спрайт монстр заменить картинку на изоброжение мертвого монстра. И пометить что он труп. Правдо при больших значениях трупов будет тормазить. Но обычно делают так труп просто рассасыватся исчизает через определенное время. Тогда спрайт можно удалить.


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

:) считаю тему закрытой.  или, лучше посмотрите в мою тему про редатор карт :)


Cash   (2006-01-26 18:21:00) [4]

Groun Up?! Gooood!


Аццкий_рыцарь:)   (2006-01-26 17:45:00) [5]

Я придумал как решить проблему!

Взял создал еще один бэкграунд. Его Image сделал квадрат белого цвета 128х128 пикселей. Потом Bitmap этого бэкграунда растянул на такую же ширину и высоту как и настоящий бэкграунд, и поставил у квадрата TransparentColor:=clWhite. На нем все рисую и тормозов нет! :) вопрос снят :)


Cash   (2006-01-26 17:21:00) [6]

Не, по моему удобнее текстуру еще одну создавать в DxImageList.
Но это будут такие тормоза!!!!!
А сурфис по моему так просто не подвигаешь.

Аццкий_рыцарь:):
Наверное всетаки придется выбирать между прикольными трупоками и
прикольной большой картой. Есть конечно еще третий вариант, но там
придется терять производительность!


Аццкий_рыцарь:)   (2006-01-26 15:41:00) [7]

А как сделать сурфейс для всего бэка?


Аццкий_рыцарь:)   (2006-01-26 15:40:00) [8]

А как сделать сурфейс для всего бэка?


П7   (2006-01-26 15:06:00) [9]

Проще сделать сразу surface для бэка и рисовать трупаки туда.


Cash   (2006-01-26 11:34:00) [10]

2 Аццкий_рыцарь:):
А с трупами монстряков тебе распрощаться приделся,
ну на самый крайняк придется попращаться с их рисованием прямо
на бэк-е. Придется у DxDraw делать CreateSurface или (в принцыпе
это одно и тоже) динамически создавать еще оду текстуру, которая
заполняется ее прозрачным цветом и размерами одн к одному с картой,
и на эту текстуру и рисовать тем же способом трупы.

Shirson ©   (26.01.06 08:16) [10]:
А там между спрайтом и его картинкой только три процедуры стаят:
DoMove, DoDraw, DoCollision! :)


Shirson   (2006-01-26 08:16:00) [11]

Я со спрайтами не работал, подсказать немогу.
Правда есть подозрение, что никак. Заводи дополнительную плоскость размерами с карту и на неё рисуй мертвяков. После вывода на экран карты, выводи плоскость с мертвяками.


Аццкий_рыцарь:)   (2006-01-26 02:27:00) [12]

я прочитал свои посты и сам запутался :)

вот...

создаю карту:

 grass:=tgrass.Create(DXSpriteEngine1.Engine);
  grass.setmapsize(10,10);
  grass.Image := form1.dxImageList1.Items.Find('grass');
 
 grass.x:=10;
 grass.y:=10;
 grass.z:=-100;

 grass.tile:=false;

пытаюсь нарисовать мертвого монстряка на бэкграунде:

monster.image.Draw(grass.Image.PatternSurfaces[0],1,1,0);

мне надо на карте grass нарисовать монстра. Но оно рисует не просто на карте, а на всех 100 тайлах по монстру с координатами (1,1)  :(( А как обратиться к сурфейсу самой карты а не отдельного тайла?


Shirson   (2006-01-25 16:21:00) [13]

Я .похоже, не очень понимаю, что ты делаешь и чего хочешь добиться :)
Всмысле кода и целей.


Аццкий_рыцарь:)   (2006-01-25 14:35:00) [14]

PatternSurface[0] это была моя первая попытка. И когда я её вызвал, то делфи заглючил выскочило штук 5 ошибок, и хороше что я сохранил все :)

наверное прийдется делать еще один здоровый спрайт по ширине и длинне такой же как и карта, только прозрачный, и на нем рисовать :(

просто я карту задал setmapsize (10, 10), а image наверное это только (1,1), а как мне найти сурфейс всей карты?


Shirson   (2006-01-25 14:13:00) [15]

PatternSurface[x]?


Аццкий_рыцарь:)   (2006-01-25 13:18:00) [16]

Неужели мастера больше никогда не заглянут в эту ветку? НУ ЗАГЛЯНИТЕ! (бъется головой "ап стенку")

и вот еще вопросец:

ну с картой я разобрался и монстряков "приклеил" :) к ней... Вот чего немогу понять. Допустим у меня setmapsize(10,10), а как мне добраться до surface? Image, это только один рисунок а она состоит из массива таких рисунков :(


Аццкий_рыцарь:)   (2006-01-24 20:29:00) [17]

Ээээээээээ ап....


Аццкий_рыцарь:)   (2006-01-24 14:13:00) [18]

Еще вопрос.

Как сделать, чтоб карта когда выходит за пределы экрана не обрезала эту часть и не добавляла её в начале?

Я когда таким способом привязываю монстряков к карте, то они какого-то х** летят с невообразимой скоростью, в то время когда карта передвигается постоянно на +10 :(


Аццкий_рыцарь:)   (2006-01-24 13:57:00) [19]

Вот еще одно. А какой surface у карты? например у меня карта это TGrass, а надо на surface этого спрайта нарисовать картинку DXImageList1.items.item[0].
dxImagelist1.items.items[0].draw(??????, 100, 100, 1);

что писать?


Cash   (2006-01-24 08:58:00) [20]

Для того, чтобы у тебя карта была 128х128 надо задать:
SetMapSize(128,128);
Вот тебе ответ по сохранению карт:
Для начала реши размеры тайлов своей картинки (32х32/64х64/256х16 и т. д.)
Храни свои граф ресурсы в отдельном от проги файле (*.dxg)
Сделай редактор своей карты:
- Поле DxDraw для изображения карты
- Менюшка для сохранения и загрузки
- По вкусу (справа/слева/сверху/снизу) панелька, на которой варианты
 тайлов. (по другому: набор кнопочек с изображениями тайлов)
- прог-начинка должна быть индивидуальна, это сам. Но если что в той ветке подскажу.
- сделай формат файла (если не охота, то записывай в текстовый файл),
 записывай в файл ширину, высоту (если они нужны) и далее сам масив Chips.

Далее всего две процедурки - загрузка формата и его сохранение. ВСЕ!

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

Procedure TKozel.DoMove(<...>);
begin
 <...>
 X := Map.X + FRealX;
 Y := Map.Y + FRealY;
 <...>
end;

При всем этом - FRal(X/Y) - это точные координаты в мире (на карте),
а X/Y - координаты на экране. (думаю ты теперь знаешь что надобы
поправить).


Наверх

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