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

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

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

Регистрация: Aug 2011
Сообщений: 13
По умолчанию Отследить объект по координатам

Всем привет =) делаю игру в стиле point'n'click.
Задача такая - дана квадратная локация(MovieClip) пустая по середине и персонаж должен пустоту обойти, я кликаю мышкой по конечному пункту назначения, и шарик двигается.



Код AS3:
public function game() {
			var goalX,goalY:int;
			Room.addEventListener(MouseEvent.MOUSE_DOWN,roommousedown);
			function roommousedown(event:MouseEvent):void
			{	goalX = mouseX;
				goalY = mouseY;
				movetimer.start();	}
			var movetimer:Timer = new Timer(1,10);
			movetimer.addEventListener(TimerEvent.TIMER, charactermove);
			movetimer.addEventListener(TimerEvent.TIMER_COMPLETE, timer_reset);
			function charactermove(event:TimerEvent):void
			{					
			if(MovieClip(root).Char.x < goalX)
			{MovieClip(root).Char.x += 2;}
			if(MovieClip(root).Char.x > goalX)
			{MovieClip(root).Char.x -= 2;}
			if(MovieClip(root).Char.y < goalY)
			{MovieClip(root).Char.y += 2;}
			if(MovieClip(root).Char.y > goalY)
			{MovieClip(root).Char.y -= 2;}
			}
			function timer_reset(event:TimerEvent):void
			{
			movetimer.reset();
			movetimer.start()
			}
		}
Как я понимаю нужно проверить, если например на точке (x-1;y) от персонажа нету Movie clip, то двигаться надо y+1 либо y-1.
Как мне это проверить?

Старый 23.06.2012, 20:11
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 2  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Гуглите алгоритмы поиска пути.
Или ищите на форуме.
Много раз обсуждались.

И не используйте вложенных функций.
Они тут ни к чему.

И имена переменных в ас3 принято писать с маленькой буквы (кивок в сторону Room)
Вообще почитайте соглашение по написанию кода
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 23.06.2012 в 20:16.
Старый 24.06.2012, 01:24
gevmarlen вне форума Посмотреть профиль Найти все сообщения от gevmarlen
  № 3  
Ответить с цитированием
gevmarlen

Регистрация: Aug 2011
Сообщений: 13
спасибо за советы, учту, но мне не алгоритм нужен, мне надо чтоб объект понял что белый квадрат это препятствие, например определить что в точке (32;45) есть Movie Clip, а в (34;45) нет. Как это в AS проверить?

Старый 24.06.2012, 19:50
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 4  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Цитата:
мне надо чтоб объект понял что белый квадрат это препятствие, например определить что в точке (32;45) есть Movie Clip, а в (34;45) нет
Функция hitTestPoint();

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

Например, если выполнять развёртку габаритов игровых объектов на матрицу координат (сетку), будет что-то такое (поиск пути при этом можно будет вести на матрице любым алгоритмом; излюбленный алгоритм для игр, насколько я знаю, А* (А-звёздочка)):
Изображения
 


Последний раз редактировалось semenyakinVS; 26.06.2012 в 01:05.
Старый 24.06.2012, 21:00
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 5  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
Цитата:
Сообщение от gevmarlen Посмотреть сообщение
спасибо за советы, учту, но мне не алгоритм нужен, мне надо чтоб объект понял что белый квадрат это препятствие, например определить что в точке (32;45) есть Movie Clip, а в (34;45) нет. Как это в AS проверить?
Препятствие – квадрат?
Тогда всё просто, ведь вы знаете координаты всех сторон квадрата (.x, .y, .x+.width, .y+.height) и можете проверить, лежит точка между сторонами или нет.
Ну а вобще, hitTestPoint, да.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Anton Riot Посмотреть сообщение
Препятствие – квадрат?
Тогда всё просто, ведь вы знаете координаты всех сторон квадрата (.x, .y, .x+.width, .y+.height) и можете проверить, лежит точка между сторонами или нет.
Ну а вобще, hitTestPoint, да.
Лучше в модель. Квадрат (MovieClip) имеет Rectangle (MovieClip#getBounds()). Используйте первичное: Rectangle#containsPoint() instead DisplayObject#hitTestPoint().
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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