|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
BitmapData и hitTest. Не удается заставить ехать машину по дороге
Привет. Вот возникла задача заставить ехать машину по нарисованной дороге. Т.е. есть у меня клип road и car. Car движется с помощью клавиш стрелочек.
Делал так: carRect = car.getBounds(this); carBitmapData = new BitmapData(carRect.width, carRect.height, true, 0); carBitmapData.draw(car); roadRect = road.getBounds(this); roadBitmapData = new BitmapData(roadRect.width, roadRect.height, true, 0); roadBitmapData.draw(road); addEventListener(Event.ENTER_FRAME, runGame); а сама функция runGame private function runGame(e:Event):void { if(carBitmapData.hitTest(new Point(carRect.x, carRect.y), 255, roadBitmapData, new Point(roadRect.x, roadRect.y), 255)) { trace("on the road"); } else { trace("out"); } } вроде б же все правильно? а мне трейс всегда показывает "on the road" , даже если я вне дороги, прикрепил примерчик на всякий случай. Подскажите в чем проблема? |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Не самый лучший способ определять дорогу. hitTest - довольно ресурсоемкий метод. Если бы я делал что-то подобное, и у меня дорога отличалась от всего остального, то я бы заюзал getPixel(); Будет работать в разы быстрее и лучше.
Собственно, уже доводилось делать определение воды на карте таким образом, и дорогу как-то раз определал. Но дорога у меня была нарисована на битмапке с альфа каналом, и была простая проверка, если альфа полученного пикселя != 0, то машина на дороге |
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
Понял, спасибо, попробую с getPixel
Добавлено через 1 час 47 минут А если мне придется в будущем добавлять препятсвия с ними столкновение, как я понимаю, только с помощью hitTest получится сделать, да? Там же может быть неоднородная заливка и т.п. .. |
|
|||||
Рисуйте дорогу одним цветом, место где нельзя перемещаться - другим. Препятствия третьим. getPixel() по цвету определит что где находится. А если препятствия создаются динамически и всегда разные - можно хиттестом попробовать или постоянно перерисовывать битмап.
__________________
Кодинг, багинг, алгоритминг. me @ |
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
Ясно, спасибо
|
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Есть другой вариант, определять диапазон цветов, вместо конкретного цвета. Вот так у меня в игре определялась вода: При том, что изображение воды было неоднородным. Куча синих оттенков |
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
С наложением битмопов - по-моему отличная идея. Но что-то у меня пока даже самый простой способ так и не заработал
Вот у меня road (мувик с трассой) стоит в x:0, y:0. А car - крутится в разные стороны клавишами. Отсчет координат идет у машинки от левого верхнего угла. Ну вот хотя бы по нему и пробую определить цвет фона, т.е. делаю так: roadRect = road.getBounds(this); roadBitmapData = new BitmapData(roadRect.width, roadRect.height, true, 0); roadBitmapData.draw(road); и не отрабатывает как надо ... Это уже не говорю, если я road хочу сдвинуть вверх, так там вообще совпадения не ощущаются, хотя и пишу в этом случае а при повороте я смещаю car на speedX , а всю область на -speedX, может это как-то влияет еще? Прикрепил пример, если кто захочет глянуть ... |
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
вроде б понял, там у клипа road scale стоял, вот такая глупая ошибка получилась
|
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Зачем нужет вот этот код?
|
|
|||||
Регистрация: Aug 2005
Сообщений: 106
|
а как проще получить битмап road?
Добавлено через 6 минут Еще возник вопрос, может goodguy или кто другой подскажите? У меня карта максимум может быть 4000 пикселей, да? А если надо больше, то придется кусками атачить, правильно я понял? |
Часовой пояс GMT +4, время: 10:28. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bitmapdata , hittest |
|
|