Top Ad unit 728 fff 90

Flash Game Book (8 урок)

Обнаружение столкновений с применением математики

 

Используя математику, мы можем создать код обнаружения для нескольких фигур.

С помощью hitTest() обнаружение столкновений для этих ситуаций не могло бы быть точным,

потому-что эта функция не обрабатывает столкновение между фигурами внутри двух клипов.

 

Обнаружение столкновения точки с окружностью

Если расстояние между точкой и центром окружности меньше,

чем радиус окружности, то точка попала в окружность.

Обратите внимание, что радиус окружности составляет половину ее ширины.

Рассмотрим на примере.

На нашем первом слое нарисуем круг.

Преобразуем объект в клип (F8) с именем круг_клип1.

Создадим пару точек.

Преобразуем точки в клипы с именами точка_клип1 и точка_клип2.

Выберем наш слой.

И впишем в него код (Actions-Frame):


точка1 = {};

точка1.x = точка_клип1._x;

точка1.y = точка_клип1._y;

точка2 = {};

точка2.x = точка_клип2._x;

точка2.y = точка_клип2._y;

круг1 = {};

круг1.x = круг_клип1._x;

круг1.y = круг_клип1._y;

круг1.radius = круг_клип1._width/2;

 

function обнаружениеТочкиВОбъекте(точка, круг) {

    var xDiff = круг.x-точка.x;

    var yDiff = круг.y-точка.y;

    var distance = Math.sqrt(xDiff*xDiff+yDiff*yDiff);

    if (distance<=круг.radius) {

        trace("Точка в объекте!");

    } else {

        trace("Точка не в объекта!");

    }

}

обнаружениеТочкиВОбъекте(точка1, круг1);

обнаружениеТочкиВОбъекте(точка2, круг1);

Строка 1 создает новый объект с именем точка1,

который мы будем использовать как контейнер для хранения информации о клипе точка_клип1.

Строка 2 и 3 создают переменные для объекта, для представления позиции клипа.

Далее таким же методом создаются объекты для остальных клипов.

Строка 11 определяет функцию для обнаружения столкновения и применяет ее для проверки на столкновение.

Функция принимает два параметра: точка и круг.

Точка и круг являются объектами, действующими лишь при выполнении функции.

Для обнаружения столкновения, мы сравниваем расстояние между точкой и окружностью с радиусом окружности.

Для этого, мы определяем расстояние используя теорему Пифагора.

Последние две строки вызывают функцию, с передачей ей объектов, для которых мы хотим проверить столкновение.

 

... следующим будет обнаружение столкновения окружности с окружностью ...

Скачать

All Rights Reserved by ProcessPlus 2014 - 2017

Написать нам

Имя

Email *

Сообщение *