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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.039 c
3-1103788640
juice
2004-12-23 10:57
2005.01.30
Пустое поле


4-1102494711
dr Tr0jan
2004-12-08 11:31
2005.01.30
Управление процессом (сервисом)


6-1099995518
Sergey18
2004-11-09 13:18
2005.01.30
Определение изменения Web-страницы


1-1105616282
Jupiter
2005-01-13 14:38
2005.01.30
Вопросы по Dll


1-1106063087
rolex
2005-01-18 18:44
2005.01.30
Как отловить сообщение о восстановлении/разворачивании окна?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский