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

Вниз

Изометрия   Найти похожие ветки 

 
MANGOL   (2004-09-20 20:35) [0]

Привет!

Делаю чего-то в DirectDraw. И вот задумал я всё это дело перевести в изометрическую проекцию, для красоты значит (раньше был вид сверху, перпендикулярно земной тверди). Но оказалось, что всё не так просто. Статейка с Delphi GFX мне не совсем понятна, там выходит, что юнит из точки 0.1 может идти сразу в 2.0, это безобразие я считаю. Товарищи господа, как же сделать изометрию? У меня есть кой-какие мысли, но так слишком тупо выйдет, мне кажеца. Мож, у кого-нть есть примерчик, или ссылка?
Буду чрезвычяйно рад любой помощи.

P.S. у меня ещё такая фигня есть, некоторые кнопочки в меню не работают (в смысле, они и не должны работать), и по нажатии вызывают процедуру noaction, к-рая показывает messagebox с надписью типа "эта кнопка щя не работаит!" Так вот, окно сообщения не всегда появляется, но по нажатии enter прога продолжает нормуль работать. Т.е. наверно окно как-то попадает "под" моё окно, хотя сам msgbox активен, и кнопка ok нажимабильна.


 
Красный молоток   (2004-09-20 20:44) [1]

Делай изометрию не по сетке.


 
MANGOL   (2004-09-20 21:09) [2]

гм, а это как?


 
NikeOLD ©   (2004-09-20 21:47) [3]


> P.S. у меня ещё такая фигня есть, некоторые кнопочки в меню
> не работают (в смысле, они и не должны работать), и по нажатии
> вызывают процедуру noaction, к-рая показывает messagebox
> с надписью типа "эта кнопка щя не работаит!" Так вот, окно
> сообщения не всегда появляется, но по нажатии enter прога
> продолжает нормуль работать. Т.е. наверно окно как-то попадает
> "под" моё окно, хотя сам msgbox активен, и кнопка ok нажимабильна.

Ты поверх DirectDraw вызываешь стандартной GDI-окно. Для таких вещей в DDraw предусмотрен метод интерфейса FlipToGDISurface.
Просто первичная поверхность всегда находится поверх всех окон, рабочего стола и. т.п., соответсвенно твой MessageBox оказывается под ней и из-за этого невидим, но приложение начинает обрабатывать его.


 
MANGOL   (2004-09-20 22:16) [4]

>> NikeOLD ©   (20.09.04 21:47) [3]
спасибо большое, я подозревал что это как-то так делается.

но, блин, так как же с изометрией?
я тут подумал, можно считывать из этаво.. из массива поверхности поля битвы "по диагонали" (например (0,3), (1,2), (2,1), (3,0) ....), а выводить "по горизонтали", соответственно и миникарту в углу придётся развернуть на 45 градусов. Но это кажись извращение какое-то, врядли так кто-то делает. К тому же углы карты нельзя будет отобразить, или там нечто будет вроде космоса.

а:           б:
---------  
|....1....
|...111...   1 1 1 1
|..11111..    1 1 1
|.1111111.   1 1 1 1
|..11111..    1 1 1
|...111...   1 1 1 1
|....1....    1 1 1
|.........   1 1 1 1

на рис. (а) единичками показаны ячейки, считываемые из массива. На пододеяльник похоже чем-то... Вот. На рисунке (б) порядок вывода на экран.


 
cyborg ©   (2004-09-21 08:36) [5]


> там выходит, что юнит из точки 0.1 может идти сразу в 2.0,
> это безобразие я считаю.

Никакого безобразия тут нет, 8 направлений, хочешь чтобы такого небыло, делай 4 стороны, только у тебя так все лесенкой ходить будут.
Мне кажется для изометрии шестигранные ячйки хорошо подходят, перемещение более реальное получится.


 
MANGOL   (2004-09-21 12:36) [6]

cyborg ©   (21.09.04 08:36) [5]

не, лесенкой мне не надо :)
(хотя, вроде, в Фолауте именно так?)
есть же игры где в изометрии нормально перемещаются челобречки.. интересно, как там всё реализовано. Короче, буду по (4) делать.
всем спасибо :)


 
cyborg ©   (2004-09-21 13:14) [7]

Не понятно, лесенкой не надо, а будет по 4 делать.
В Фаллауте шестигранные ячейки.


 
MANGOL   (2004-09-23 13:55) [8]

я имел ввиду [4]му посту. По-своему, тоесть. Вроде получается, не знаю правда, с какой скоростью это работать будет. Проверок и вычислений многовато (по сравнению с видом сверху, где их вобще почти нет - знай себе умножай координаты на размеры ячеек..)


 
Mihey_temporary ©   (2004-09-23 15:31) [9]

2 MANGOL:

Так и делают, например, в Age Of Empires - там карта - это ромб и никто не скрывает. Можно просто обрезать крылья в прямоугольник, но будет излишек ресурсов, хотя не такой уж и большой, чтобы сразу отвергать. Нумеруя клетки слева направо, снизу вверх так, как они идут на экране, ты придёшь к фигне.


 
MANGOL   (2004-09-23 18:17) [10]

//Mihey_temporary ©   (23.09.04 15:31) [9]
да, я так и сделал. Вроде работает зашибись.
А излишек ресурсов незначительный совсем. Пара килобайт каких-то вшивых, кому они нужны? :)

модуль написал изометрический. кому охота посмотреть - могу намылить. там с демкой маленькой даже, что-то вроде примера :)


 
П7   (2004-09-23 22:36) [11]

Почитай документацию по формату карты для игры Fallout, там всё очень прозрачно написано. И обязательно сходи на:
1. GameDev.ru - раздел статьи - изометрия
2. GameDev.ru - Форум - Изометрия
3. GameDev.net - там тоже покопайся, хот я там нашёл мало действительно полезного... (:
Ну и... Рамблер тебе в помощь!!! (:


 
OranZevjii   (2004-10-20 05:35) [12]

To Mongol: Скинь что получилось на мыло, если не сложно


 
acidman   (2004-10-20 06:09) [13]

to mangol: кинь мне на 43735@bk.ru


 
Zeal ©   (2004-10-21 21:31) [14]

GameDev.ru - раздел статьи - изометрия

не нашел!... если не сложно киньту ссылку прям на статью.



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

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

Наверх




Память: 0.5 MB
Время: 0.025 c
1-1105938239
Bobby Digital
2005-01-17 08:03
2005.01.30
Help File pt.2


1-1105700684
Dmitry_04
2005-01-14 14:04
2005.01.30
Как мне перевести свой тип в поток?


1-1105698951
Unknown
2005-01-14 13:35
2005.01.30
Application.CreateForm


3-1103707418
Guitar
2004-12-22 12:23
2005.01.30
Вход на сервер через клиента под разными логинами.


3-1104145015
DimaK
2004-12-27 13:56
2005.01.30
Backup базы Firebird