Вопрос

У меня повернутая дуга, нарисованная с использованием Android 2D Graphics

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

дуга будет повернуть Пока игра работает,

Я хочу знать, как я могу обнаружить, сталкиваются ли какие -либо другие игровые объекты (прямые, круги) ??

Это первый раз для меня, чтобы написать игру :)

Я видел что -то подобное в http://hakim.se/experiments/html5/core/01/

заранее спасибо

Это было полезно?

Решение

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

Посмотрите на следующую картинку.

Здесь есть 3 объекта. Черная сфера, это визуализирует вашу дугу, если что -то сталкивается с ней, она может быть внутри вашей дуги. Красная сфера на вершине черной сферы, которая визуализирует «внутреннюю» дуги, если что -то находится внутри красной сферы, это определенно не «внутри» дуги. Теперь есть также зеленый треугольник, который визуализирует «отсечение» вашей дуги, все внутри зеленого треугольника также определенно не в вашей дуге.

Тестирование, если что -то находится внутри черной сферы, легко. (Расстояние объекта до центра сферы <= радиус сферы). То же самое для красной сферы. Зеленый треугольник немного хитрый, сначала вам нужно построить это. Найдите начало и конец радиан своей дуги. и повернуть единичный вектор путем начала радиан. Затем поверните единичный вектор на конечные радианы. Удлините оба эти вектора на 2 * радиус черной сферы. Теперь используйте центральную точку вашей дуги и позиции двух векторов с добавлением центральной позиции в качестве 3 точек треугольника. Затем вы можете использовать один из решателей столкновений точечного треугольника: http://www.bing.com/search?q=point+triangle+collision&go=&form=qblh&scope=web

Так что помните: столкновение с Arc = (столкновение с черной сферой) &&! (Столкновение с красной сферой) &&! (Столкновение с зеленым треугольником).

ARC Collision

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top