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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.10.2010, 15:52
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 1  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
По умолчанию Как лучше перебрать соседние клетки вокруг нужной?

Мне нужно чтобы юнит атаковал другого юнита только тогда, когда он на разрешенном расстоянии от него. У меня всё построено на клетках, так что нужно исходить из них. Я так понимаю что нужно перебирать соседние клетки у клетки на которой стоит вражеский юнит. Вот допустим мне надо чтобы юнит атаковал только в том случае если расстояние между юнитами равно двум клеткам. Как это реализовать не подскажите?

Старый 05.10.2010, 17:02
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Код AS3:
if(расстояние между юнитами равно двум клеткам или меньше)
атакуем()
__________________
Отряд Котовскага

Старый 05.10.2010, 17:11
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 3  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
у меня обычно клетки имели свои "координты" типа CellX \ CellY далее вычитаешь разницу между текущей и нужной и смотришь превышает ли какое либо из значений 2. далее чтото делаешь.
гейм девом особо не увлекаюсь, но недавно решал похожую задачу именно так.

Старый 05.10.2010, 17:26
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 4  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Котяра, что за флуд?

nOobCrafter, а клетки может в массив какой-то поместить и сравнивать?

Старый 05.10.2010, 17:29
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 5  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
может а зачем?
что именно ты будешь сравнивать? индексы какие то?.. почему бы эти индексы не занести в св-ва и забить на этот массив?

Старый 05.10.2010, 17:40
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от FlashWizard Посмотреть сообщение
Котяра, что за флуд?
какой же это флуд?
это решение поставленной задачи.
в цикле рендеренга (после смещения позиций юнитов)
Код AS3:
for(var i=0;i<unitArray.length;i++)
{
unit:Unit = unitArray[i] as Unit;
if( unit.getDistance(hero)<=2)
unit.attack(hero);
}
__________________
Отряд Котовскага

Старый 05.10.2010, 18:58
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 7  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Вот это уже ближе к решению. А где в коде упоминание о клетках?

Старый 05.10.2010, 19:20
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
например
Код AS3:
// лучше оперировать квадратами расстояний
public function getSquareOfDictance(unit:Unit):int
{
var di:int = this.i-unit.i;
var dj:int = this.j-unit.j;
 
return (di*di+dj*dj)
}
ну я ведь не знаю что вы именно используете и как у вас постороен код..
поэтому лучше всего:
Код AS3:
if(расстояние между юнитами равно двум клеткам или меньше)
атакуем()
__________________
Отряд Котовскага

Старый 05.10.2010, 20:16
petyar вне форума Посмотреть профиль Отправить личное сообщение для petyar Найти все сообщения от petyar
  № 9  
Ответить с цитированием
petyar

Регистрация: Sep 2005
Сообщений: 106
В своей пошаговой игре использовал для таких целей специальную функцию, формирующую массив цен хода, по размерности естественно равный массиву с описанием карты. И просто вызывал ее с различными параметрами, например с ограничением по максимальной цене хода (для определения дальности хода юнита) или с игнорированием непроходимых ячеек, для ренж-атаки.

Старый 06.10.2010, 14:07
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 10  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
petyar, можно по-подробней?

Цитата:
// лучше оперировать квадратами расстояний
public function getSquareOfDictance(unit:Unit):int
{
var di:int = this.i-unit.i;
var dj:int = this.j-unit.j;

return (di*di+dj*dj)
}
А как использовать, то что возвратится функцией?

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

Теги
клетки , юниты

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

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


 


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


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