|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
|
Какую библиотеку для создания изометрических игр посоветуете?
Начал использовать as3isolib и сразу же наткнулся на баги. Если какие-нибудь объекты на сцене пересекаются, то во время рендеринга сцены происходят жуткие баги с сортировкой. Поэтому решил узнать мнение опытных в этом деле. Может кто-то уже использовал какую-нибудь подобную библиотеку и остался ей доволен?
|
|
|||||
После, того как в Action Script3, запретили самим выставлять глубину для объектов, а только в плане очередности, то функцию сортировки для Action Script1 пришлось выкинуть на помойку,
а новую не писал, потому что как то не нужна была. Да и логику сортировки сложней написать по новым правилам.
__________________
Книги и желание лучшие учителя. |
|
|||||
Регистрация: Jun 2009
Адрес: Dnepropetrovsk
Сообщений: 18
|
использовал as3isolib и остался ее доволен. там главное правильно задать изометрические размеры для объектов и тогда нет никаких глюков с сортировкой (имею ввиду IsoSprite, потому как для того же IsoBox задаются размеры при создании)
|
|
|||||
Не хочу хвастаться. Конечно, то над чем я сейчас работаю не сравнится над as3isolib Но зато свое,родственное! И глюков нет. Вся изометрия, все глубины, все работает как надо.... Или не работает. Но, если не работает - знаю где собака зарыта!
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Ничего особенного. Вот пример. А вот класс для преобразования координат:
package gamecontent.mapcomponents { import flash.geom.Point; /** * Converts the screen and isometric coordinates * @author HardCoder */ public class IsoTransform { internal static const ALPHA:Number = 0.4636476090008062; /** * Converts screen coordinates to isometric * @param x - screen x * @param y - scrren y * @return Point(isox, isoZ) */ public static function screenToIso(x:Number, y:Number):Point { var isoX:Number = (x * Math.tan(ALPHA) + ((y - x * Math.tan(ALPHA)) / 2)) / Math.sin(ALPHA); var isoZ:Number = ((y - x * Math.tan(ALPHA)) / 2) / Math.sin(ALPHA); return new Point(isoX, isoZ); } /** * Converts isometric coordinates to screen * @param isoX - isometric x * @param isoZ - isometric z * @return Point(x, y) */ public static function isoToScreen(isoX:Number, isoZ:Number):Point { var x:Number = isoX * (Math.cos(ALPHA)) - isoZ * (Math.cos(ALPHA)); var y:Number = isoX * (Math.sin(ALPHA)) + isoZ * (Math.sin(ALPHA)); return new Point(x, y); } } } Добавлено через 35 минут Плитки расположены в одном контейнере, юниты (здания, деревья, люди) - в другом. Конечно это нельзя назвать изометрической библиотекой, но для моих нужд полностью подходит. А именно для создания такой вот пошаговой стратегии.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
HardCoder, оно сортирует объекты с прямоугольными размерами? Ну, скажем, стоящие рядом 1x10 и 2x5
|
|
|||||
В моем случае размеры обьектов не могут быть больше размера плитки (так было задумано). Но при желании всегда можно создать обьект произвольной формы, разбив его на несколько частей. И добавлять каждую часть на нужную плитку. При сортировке каждый обьект такого здания будет помещен на тот уровень, которому соответствует плитка на которой он стоит. Самая дальняя часть будет помещена на самый нижний уровень, потому что плитка на которой эта часть стоит - находится дальше от зрителя. Самая ближняя часть на самый высокий уровень.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Понятно, это обычная сортировка по точкам. Не то это.
|
Часовой пояс GMT +4, время: 22:06. |
|
« Предыдущая тема | Следующая тема » |
Теги |
библиотека , изометрия |
|
|