3 голоса
 
1687 просмотров
10.09.2016 / 19:58  Death

Столкновение кругов

Вот фиксю свою игру WShooter.
Мне надо проверить столкновение кругов. На данный момент проверяю только прямоугольную(квадратную) область вокруг врагов и героя.
Вот что нужно:
- метод возращал true в случаи столкновения
- метод принимает объекты:
-- player
-- enemy
у этих объектов есть поля:
- x
- y
- r //радиус

Помогите пожалуйста с формулой, или сам метод опишите :)
Изм. aNNiMON от 10.09.2016 / 20:20
Ответы
 
5 голосов
 
# 10.09.2016 / 20:09  SeTSeR
Формула для столкновения вроде бы очевидна, разве нет?

p и e - player и enemy соответственно
 
3 голоса
 
# 10.09.2016 / 20:27  mrEDitor
Капитан объясняет её наглядно, так как она недостаточно очевидна: когда круги сталкиваются, их центры находятся на растоянии, меньшем, чем сумма их радиусов. Применяя теорему Пифагора можно получить ту стрёмную формулу выше. Хотя я бы написал
  1. circle a, b
  2. distance(point a, point b) = sqr(a.x - b.x) * sqr(a.y - b.y)
  3. have_collision(circle a, circle b) = dist(a.center, b.center) < radius(a) + radius(b)

circles.png (5.74 кб.)
 
-1 голос
 
# 11.09.2016 / 10:12  Aladdin
Есть же класс Circle, воспользуйся им.
Всего: 3

Реклама

Мы в соцсетях

tw tg yt gt