Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

TBackGroundSprite В DelphiX...   Найти похожие ветки 

 
Аццкий_рыцарь:)   (2006-01-24 01:10) [0]

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

и еще о нем...

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

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


 
Cash ©   (2006-01-24 08:58) [1]

Для того, чтобы у тебя карта была 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 - координаты на экране. (думаю ты теперь знаешь что надобы
поправить).


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

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

что писать?


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

Еще вопрос.

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

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


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

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


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

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

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

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


 
Shirson ©   (2006-01-25 14:13) [6]

PatternSurface[x]?


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

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

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

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


 
Shirson ©   (2006-01-25 16:21) [8]

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


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

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

вот...

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

 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-26 08:16) [10]

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


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

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

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


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

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


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

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


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

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


 
Cash ©   (2006-01-26 17:21) [15]

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

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


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

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

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


 
Cash ©   (2006-01-26 18:21) [17]

Groun Up?! Gooood!


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.032 c
15-1161167667
Juice
2006-10-18 14:34
2006.11.05
Quantum Grid, обычная таблица


15-1160522565
Германн
2006-10-11 03:22
2006.11.05
Пусть на меня посыпятся ещё куча кирпичей,


5-1142103023
AdmeraL
2006-03-11 21:50
2006.11.05
Значения Default


15-1161097258
oldman
2006-10-17 19:00
2006.11.05
Что за новая система на сайте???


2-1161261418
СержК
2006-10-19 16:36
2006.11.05
Событие наведения указателя мышки к кнопке на форме