Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.052 c
2-1161085507
VALUA
2006-10-17 15:45
2006.11.05
БИБЛИОТЕКА QTINF.DLL


15-1160968658
Slider007
2006-10-16 07:17
2006.11.05
С днем рождения ! 14 октября


15-1161131078
SerJaNT
2006-10-18 04:24
2006.11.05
Сравнение 2х цветов


11-1137864238
Boguslaw
2006-01-21 20:23
2006.11.05
KOL Unicode


1-1159008685
DelphiLamer
2006-09-23 14:51
2006.11.05
Как получить список всех процедур в библиотеке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский