![]() |
|
||||||||||
|
|||||
|
strange mood
|
Цитата:
1. Любая прямая описывается функцией y = k*x + b 2. Находим k и b для прямой, по которой летит пуля, решив систему уравнений: yPast == k*xPast + b && yNow == k*xNow + b 3. Аналогично находим k и b для прямой, по которой движется враг 4. Ищем координаты пересечения прямых: y == kBullet*x + bBullet && y == kEnemy*x + bEnemy 5. Проверяем, принадлежит ли точка пересечения к отрезкам, которые враг и пуля прошли за 1 тик: (x между xBulletPast и xBulletNow) && (y между yBulletPast и yBulletNow) && (аналогично для enemy) На этом в принципе можно и остановиться, но если пули летают ОЧЕНЬ быстро, то можно продолжить: 6. Вычисляем соотношение, в котором точка пересечения делит отрезок пули 7. Через это соотношение получаем точку на отрезке врага 8. Ставим пулю на точку пересечения отрезков, а врага - на только что вычисленную точку 9. Проверяем на столкновение.
__________________
тонкий тролль, осеянный благодатью |
![]() |
Часовой пояс GMT +4, время: 23:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|