Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 210 >> Следующая

объект содер-кал бы I дает шара.
Некоторые программисты останавливают свой выбор на использовании самого
клипа в качестве хранилища для его информации. В некоторых случаях это
подхо-1ит, но в других, например когда клип не может все время находится
в сцене - это не очень хорошая идея. Представьте игру, в которой
неприятельский персонаж появляется после вас. Этот противник может
покинуть экран для пополнения боеприпасов и затем вернуться опять через
30 секунд или около того. В этом случае, вероятно, неплохой идеей будет
удалить клип из сцены (из соображений производительности), но сохранить
объект, который хранит характеристики противника таким образом, что нам
не нужно восстанавливать противника на пустом месте.
В строке 2 вышеприведенного кода ActionScript мы создаем новый объект с
именем pointl, который мы намерены использовать как контейнер для
хранения информации о клипе point_clipl. Оператор pointl ={} является
краткой формой У1я создания нового пустого объекта и задания ему имени.
(В расширенной форме pointl =new Object(), так что вы можете видеть,
почему мы предпочитаем сокращенную форму.) В строках 3 и 4 мы просто
создаем переменные для объекта для представления позиции point clipl
клипа. Строки 5-8 создают объект для point_clip2 и сохраняют информацию о
нем тем же способом, который мы использовали в случае объекта pointl.
Далее, создан объект для хранения информации
о клипе circle_clipl. Он хранит координаты хиу клипа, а также его
радиус.
102
Часть 2. Исследование основ
Остальной код ActionScript определяет функцию для обнаружения
столкновения и применяет ее для проверки на столкновения.
1 //Build collision detection function
2 function pointToCircleDetection(point, circle) {
3 var xDiff = circle.x-point.x;
4 var yDiff = circle.y-point.y;
5 var distance = Math.sqrt(xDiff*xDiff+ yDiff* уDiff);
6 if (distance<=circle.radius) {
7 trace ("Collision detected!!");
8 ) e1se (
9 trace("No collision detected.");
10 }
U }
12 //Check for a collision between pointl and circlel
13 pointToCircleDetection (pointl, circlel);
14 //Check for a collision between point2 and circle2
15 pointToCircleDetection(point2, circlel);
Сначала мы определяем функцию с именем pointToCircleDetection, которая
принимает два параметра: point и circle. Как point, так и circle являются
объектами, действующими лишь при выполнении функции. Для обнаружения
столкнове ния, как мы выяснили ранее, мы сравниваем расстояние между
точкой и окруж ностью с радиусом окружности. Чтобы сделать это сравнение,
мы должны опре делить расстояние, применяя теорему Пифагора (метод,
возвращающий нас назад к гл. 3, "Тригонометрия 101"), Это
продемонстрировано в строках 3-5. В строке 6 мы сравниваем расстояние с
радиусом окружности и, если расстояни меньше или равно радиусу, выполняем
оператор trace для выдачи информации что было обнаружено столкновение.
Если это условие не выполнено, то оператор trace выполняется для
сообщения о том, что столкновения не обнаружено В строках 13 и 15 мы
вызываем функцию обнаружения столкновения с передачей ей объектов, для
которых мы хотим проверить столкновение. Например, в строке 13 мы
передаем pointl и circlel. Скрипт проверит столкновение меж pointl и
circlel. Когда вы запустите фильм на выполнение, вы должны увидет две
строки трассировки в вашем окне вывода output. В первом случае столкн
вение определяется, а во втором нет.
Глава 5. Обнаружение столкновений
103
Обнаружение столкновения окружности с окружностью
В этом разделе мы обсудим логику и кодирование, необходимые для
определения столкновения двух окружностей. Мы рассмотрим это как для
ситуаций, зависимых от кадров, так и для ситуаций, независимых от кадров.
Под зависимостью от кадров мы подразумеваем, что в каждом кадре мы
проверяем на столкновение, основываясь на текущем положении объекта (это
похоже на создание фотографий в отдельные моменты времени). В независимом
от кадров способе в каждом кадре мы проверяем, произошло ли столкновение
в некоторой точке между последним кадром и текущим. Зависимое от кадров
обнаружение столкновений для двух окружностей является простым
расширением техники обнаружения столкновения между точкой и окружностью.
Независимое от кадров обнаружение столкновений для двух окружностей
гребует гораздо больше логики и математики.
Давайте рассмотрим для начала более легкий способ.
Обнаружение столкновения "окружность - окружность", зависимого от кадров
Ниже представлен наш случай обнаружения столкновения окружности с
окружностью, независимого от кадров:
Если расстояние между двумя окруэ/спостями меньше суммы или равно сумме
их радиусов, то произошло столкновение.
104
Часть 2. Исследование основ
Для просмотра для этого примера кода ActionScript откройте файл
circle__circlel.fla из папки Chapter05 на CD. В сцене две окружности:
cir-
cle_clipl и circle_clip2. Код ActionScript присваивает х и у скорости для
каждой окружности и перемещает окружности по сцене. В каждом кадре
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 210 >> Следующая