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

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

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

Регистрация: Jan 2008
Сообщений: 23
Отправить сообщение для zinchencko с помощью ICQ Отправить сообщение для zinchencko с помощью Skype™
По умолчанию Изометрия, перемещение объектов по слоям

Делаю игру в изометрии, есть проблема с перемещением объектов по слоям( чем больше object.y тем выше лежит объект). Есть вопрос, каким способом лучше всего это проверять, что бы не грузить систему (на сцене одновременно будет до 20 объектов (типовых 6). Есть ли в сети похожие решения? Как бы вы решили данную проблему?

P.S есть идея вешать на каждый объект listener и проверять его на hitTest, но у меня сразу возникает вопрос, как проверять один объект на столкновение со всеми. hitTest ведь проверяет только на столкновение 2-х объектов object1.hitTestObject(object2). Если пихать все объекты в массив и потом проверять методом перебора, не будет ли это слишком громоздко.

Старый 16.10.2008, 20:11
tyapichu вне форума Посмотреть профиль Отправить личное сообщение для tyapichu Найти все сообщения от tyapichu
  № 2  
Ответить с цитированием
tyapichu
[+1 25.07.08]

Регистрация: Jun 2008
Адрес: Москва
Сообщений: 25
Отправить сообщение для tyapichu с помощью ICQ
можно поделить игровое поле сеткой и проверять на столкновение только объекты находящиеся в соседних клетках или в одной клетке сетки.

Старый 16.10.2008, 20:21
zinchencko вне форума Посмотреть профиль Отправить личное сообщение для zinchencko Найти все сообщения от zinchencko
  № 3  
Ответить с цитированием
zinchencko

Регистрация: Jan 2008
Сообщений: 23
Отправить сообщение для zinchencko с помощью ICQ Отправить сообщение для zinchencko с помощью Skype™
а как определять в какой клетке мы находимся (похоже еще больше перебора будет, сначала на определение клетки, потом на объекты в этой клетке)? как происходит разграничение сцены на поля?

Старый 16.10.2008, 20:47
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 4  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
на enterFrame вешаем
Код:
function arrange():void { 
			items.sortOn("depth",Array.NUMERIC);
			var i:int = items.length;
			while(i--){
				if (getChildAt(i) != items[i]) {
					setChildIndex(items[i], i);
				}
			}	
		}
depth высчитывается для каждого объекта каждый раз, когда он перещещается. У меня так depth=isoX+isoY+isoZ
немного подглючивает, когда случаются два объекта с одинаковой глубиной, но что-то лучше придумать генератор depth у меня не получилось. можете поискать в Интренете по flash isometry depth sort вот, например,сразу выдал вариант http://jwopitz.wordpress.com/2008/09...depth-sorting/
__________________
~
Never trouble trouble till trouble troubles you!

Старый 16.10.2008, 21:44
zinchencko вне форума Посмотреть профиль Отправить личное сообщение для zinchencko Найти все сообщения от zinchencko
  № 5  
Ответить с цитированием
zinchencko

Регистрация: Jan 2008
Сообщений: 23
Отправить сообщение для zinchencko с помощью ICQ Отправить сообщение для zinchencko с помощью Skype™
Можно немного поподробнее? выложи если не жалко свой рабочий вариант, разберусь.


Последний раз редактировалось zinchencko; 16.10.2008 в 22:21.
Старый 16.10.2008, 22:16
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 6  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
да items - массив с объектами. isoX, isoY, isoZ - их координаты в изометрической системе. depth - их грубина.
оси координат у меня так:

При каждом перемещении каждого из объектов пересчитываем depth.
При входе в кадр в зависимости от depth сортируем глубину.
Это не самый оптимальный способ без сомнения.
__________________
~
Never trouble trouble till trouble troubles you!

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

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

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


 


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


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