Вопрос-Ответ для флеш-разработчиков - Flashans.ru (наш проект)
Новые сообщения форума - Наши люди - Поиск по форуму - Правила
  • Страница 1 из 1
  • 1
Форум » _ROOT » Уроки по Flash » Обнаружение столкновения "окружность - окружность". (AS2, Геометрия)
Обнаружение столкновения "окружность - окружность".
09.10.2010, 19:41; Сообщ. № 1
tiHo


Сообщений 30 Репутация 0 (+)
Обнаружение столкновения "окружность - окружность".

На данном уроке вы научитесь находить в какой точке произошло столкновение(касание, называйте как хотите). Данный способ можно использовать в играх типа "тетрис, бильярд, хоккей", вообщем это уже решать вам.

Приступим.

Для начала надо усвоить одно простое правило:

Сталкновение произошло если рассояние между двумя окружностями меньше суммы или равно сумме их радиусов.

Данное правило легко учится если посматреть на рисунок ниже. Ничего сложного нету это простая логика.

Ну а теперь к самому интересному! smile

Для начала из вышеописанного правила надо выделить и разобрать РАССТОЯНИЕ.

Code
xD=circle1._x-circle2._x
yD=circle1._y-circle2._y

Code
distance=Math.sqrt(xD*xD+yD*yD)

Теперь когда мы нашли расстояние(дистанцию) между двумя точками(центры окружностей), надо проверить меньше ли она сумме радиусов окружностей:

Code
if(distance <= circle1_radius + circle2_radius)
{
//произошло столкновение
}

Ниже приведен полный код урока:

Code
function circle_circle_detection()
{
// находим катеты

xD = circle1._x - circle2._x;
yD = circle1._y - circle2._y;

// находим радиус(половина окружности)

circle1_radius = circle1._width / 2;
circle2_radius = circle2._width / 2;

// находим дистанцию(расстояние)

distance = Math.sqrt(xD * xD + yD * yD);

// проверяем пересечение

if (distance <= circle1_radius + circle2_radius)
{
trace("пересекаются");
}
else
{
trace("--------------");
}
}

//вызываем в каждом кадре проверку

onEnterFrame = function ()
{
circle1._x++;
circle1._y++;
circle2._x--;
circle2._y--;
circle_circle_detection();
};

// вот и весь урок. :)

Я думаю это довольно просто. Но если чтото непонятно то лучше прочитать еще раз.


редактировать / удалить
12.10.2010, 13:33; Сообщ. № 2
HaWK


Сообщений 8 Репутация 1 (+)
Очень полезный урок smile


редактировать / удалить
13.10.2010, 04:09; Сообщ. № 3
tiHo


Сообщений 30 Репутация 0 (+)
ну куда уж там..


редактировать / удалить
16.10.2010, 13:09; Сообщ. № 4
HaWK


Сообщений 8 Репутация 1 (+)
Кто-нибудь кроме нас здесь будет?


редактировать / удалить
17.10.2010, 02:42; Сообщ. № 5
tiHo


Сообщений 30 Репутация 0 (+)
да, не оффтопь.


редактировать / удалить
Форум » _ROOT » Уроки по Flash » Обнаружение столкновения "окружность - окружность". (AS2, Геометрия)
  • Страница 1 из 1
  • 1
Поиск: