Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.01.2012, 15:11
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 1  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Question Какую библиотеку для создания изометрических игр посоветуете?

Начал использовать as3isolib и сразу же наткнулся на баги. Если какие-нибудь объекты на сцене пересекаются, то во время рендеринга сцены происходят жуткие баги с сортировкой. Поэтому решил узнать мнение опытных в этом деле. Может кто-то уже использовал какую-нибудь подобную библиотеку и остался ей доволен?

Старый 09.01.2012, 17:50
Vektor вне форума Посмотреть профиль Отправить личное сообщение для Vektor Найти все сообщения от Vektor
  № 2  
Ответить с цитированием
Vektor
 
Аватар для Vektor

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
После, того как в Action Script3, запретили самим выставлять глубину для объектов, а только в плане очередности, то функцию сортировки для Action Script1 пришлось выкинуть на помойку,
а новую не писал, потому что как то не нужна была. Да и логику сортировки сложней написать по новым правилам.
__________________
Книги и желание лучшие учителя.

Старый 10.01.2012, 18:49
ivaha83 вне форума Посмотреть профиль Отправить личное сообщение для ivaha83 Найти все сообщения от ivaha83
  № 3  
Ответить с цитированием
ivaha83

Регистрация: Jun 2009
Адрес: Dnepropetrovsk
Сообщений: 18
использовал as3isolib и остался ее доволен. там главное правильно задать изометрические размеры для объектов и тогда нет никаких глюков с сортировкой (имею ввиду IsoSprite, потому как для того же IsoBox задаются размеры при создании)

Старый 10.01.2012, 22:43
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 4  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Не хочу хвастаться. Конечно, то над чем я сейчас работаю не сравнится над as3isolib Но зато свое,родственное! И глюков нет. Вся изометрия, все глубины, все работает как надо.... Или не работает. Но, если не работает - знаю где собака зарыта!
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 10.01.2012, 23:49
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
HardCoder. Оч круто. Поделитесь.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.01.2012, 21:28
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 6  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от dimarik Посмотреть сообщение
HardCoder. Оч круто. Поделитесь.
Ничего особенного. Вот пример. А вот класс для преобразования координат:
Код AS3:
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 минут
Плитки расположены в одном контейнере, юниты (здания, деревья, люди) - в другом. Конечно это нельзя назвать изометрической библиотекой, но для моих нужд полностью подходит. А именно для создания такой вот пошаговой стратегии.
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 11.01.2012, 23:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
HardCoder, оно сортирует объекты с прямоугольными размерами? Ну, скажем, стоящие рядом 1x10 и 2x5

Старый 12.01.2012, 00:18
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 8  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
В моем случае размеры обьектов не могут быть больше размера плитки (так было задумано). Но при желании всегда можно создать обьект произвольной формы, разбив его на несколько частей. И добавлять каждую часть на нужную плитку. При сортировке каждый обьект такого здания будет помещен на тот уровень, которому соответствует плитка на которой он стоит. Самая дальняя часть будет помещена на самый нижний уровень, потому что плитка на которой эта часть стоит - находится дальше от зрителя. Самая ближняя часть на самый высокий уровень.
Изображения
 
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 12.01.2012, 00:20
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Понятно, это обычная сортировка по точкам. Не то это.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
библиотека , изометрия

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.