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

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

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

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Thumbs down Замена HitTestPoint

Здравствуйте. Я для тренировки делаю платформер. Для обработки столкновения с землей чаще всего используется HitTestPoint (HTO не сработает, платформы не представляют собой не один прямоугольник, а несколько). Проблема в том, что он вызывает у меня большое количество ошибок разного рода, но это не столь важно. Мне, честно говоря, влом работать с точками столкновения, в особенности проставлять их + уродовать макет сцены невидимой "землей" (объединение всех прямоугольников-платформ). Нет ли какого-нибудь другого способа обрабатывать столкновение с платформами, кроме разбиения фигуры на прямоугольники и последовательной обработки каждого?
__________________
В прошлом - AS3 программист, в данный момент пишу на Haxe

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

Регистрация: Jan 2015
Сообщений: 113
Не совсем понял... Но Вы о третьем параметре hitTestPoint знаете?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Рисуйте платформы в битмап-контейнер, и проверяйте свободность пикселов под героем при ходьбе/падении. Пока он стоит, проверять и не стоит даже(если конечно платформы не двигаются или не крутятся).
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Рисуйте платформы в битмап-контейнер, и проверяйте свободность пикселов под героем при ходьбе/падении. Пока он стоит, проверять и не стоит даже(если конечно платформы не двигаются или не крутятся).
Так, а вот это уже интересно. У меня маловато опыта, где можно прочитать про битмап-контейнеры? Мне их рекомендовали еще год назад. Заранее спасибо

Под контейнером вы подразумеваете просто общий для всей "земли" объект класса Bitmap, к которому можно применять методы BlendMode?

Добавлено через 5 минут
Цитата:
Сообщение от OlmerDale Посмотреть сообщение
Не совсем понял... Но Вы о третьем параметре hitTestPoint знаете?
Посмотрел в доках, не совсем понял. По рамке персонажа проводится тестирование, если true, я так думаю? Если это так, то это сильно облегчит работу


Последний раз редактировалось Wormhole; 22.03.2015 в 10:00.
Старый 22.03.2015, 12:54
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Так, а вот это уже интересно. У меня маловато опыта, где можно прочитать про битмап-контейнеры? Мне их рекомендовали еще год назад. Заранее спасибо

Под контейнером вы подразумеваете просто общий для всей "земли" объект класса Bitmap, к которому можно применять методы BlendMode?
Смотрите, есть класс Bitmap, он содержит в себе экземпляр класса BitmapData.
Подробнее про эти классы в доках да и в инете полно примеров.

Так вот, получить ссылку на битмапдату можно такесли вы в FD, иначе если вы в Adobe Flash CSX, то у вас в библиотеке картинки хранятся уже в виде BitmapData, и их нужно передавать в конструктор битмапы, чтобы нарисовать)
Код AS3:
var bmp:Bitmap = new SomeBitmapEmbedImage();
var bmpDt:BitmapData = bmp.bitmapData;
нарисовать объект в битмапдату можно методом draw. Он принимает объект и матрицу, кормите ему матрицу трансформации DO(someSprite.transform.matrix)
Рисуем какой-т спрайт в битмапдату битмапы bmp

Код AS3:
bmpDt.draw(someSprite, someSprite.transform.matrix);
addChild(bmp);
Получить пиксели в конкретной точке битмапдаты можно с помощью методов getPixel/setPixel и getPixel32 и setPixel32.

Добавлено через 9 минут
BitmapData по сути - просто массив пикселей, с удобными методами.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Спасибо за разъяснение!

Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Нарисовать объект в битмапдату можно методом draw. Он принимает объект и матрицу, кормите ему матрицу трансформации DO(someSprite.transform.matrix)
Хм, если мне надо (и даже не всегда) лишь перемещать битмапу, мне все равно скармливать ему матрицу трансормации?
Плюс если я собираюсь использовать BlendMode, мне надо что-то в соответствующий параметр писать? (вопрос не по теме, это уже касательно флешек а-ля worms)

Старый 22.03.2015, 13:04
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 7  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Вам нужно создавать экземпляр BitmapData вручную, с размерами вашей карты, и рисовать туда платформы.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Так вот, получить ссылку на битмапдату можно так: (если вы в FD, иначе если вы в Adobe Flash CSX, то у вас в библиотеке картинки хранятся уже в виде BitmapData, и их нужно передавать в конструктор битмапы, чтобы нарисовать)
Код AS3:
var bmp:Bitmap = new SomeBitmapEmbedImage();
var bmpDt:BitmapData = bmp.bitmapData;
То есть, во Flash IDE эта композиция реализована для каждого объекта (и сами эти объекты принадлежат классу Bitmap)? Или это просто экземпляр класса BitmapData, не связанный с классом Bitmap?

Старый 22.03.2015, 13:07
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Перемещать битмапу легко, просто bmp.x -= 2, bmp.y += 5;
Матрицу трансформации вы скармливаете ОБЪЕКТА, а не битмапдаты, чтобы объект рисовался не в начальных координатах, а в своих.
__________________
There is no thing in this world that is not simple.

Старый 22.03.2015, 13:08
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 10  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Вам нужно создавать экземпляр BitmapData вручную, с размерами вашей карты, и рисовать туда платформы.
Поясните, пожалуйста, что вы имеете в виду касательно размеров.

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

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

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


 


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


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