Текущий архив: 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.5 MB
Время: 0.044 c