Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вычисление угла клика относительно блока

YAna Salomakiva Ученик (86), закрыт 4 года назад
потихоньку изучаю js/Есть цель написания 2D игры, и столкнулся с такой проблемкой
Мне нужно реализовать так чтобы персонаж (допустим стот по центру поля) стрелял в то место куда бы совершен клик, моей идееё было вычисление угла клика относительно персонажа потом косинусом и синусом сделать движение пули, если правильно умаю подскажите как то реализовать либо это решается совсем по другому?
Лучший ответ
Elepsis Eclipse Гений (64071) 4 года назад
А нафиг вычислять угол, если сразу можно получить и синус, и косинус?)

Координаты перса: x1, y1
Координаты клика: x2, y2

В треугольнике:
Противоположная сторона: let y = (y1 - y2);
Соседняя сторона: let x = (x1 - x2);
Гипотенуза по теореме Пифагора: let z = (x**2 + y**2) ** 0.5

let sin = y / z;
let cos = x / z;

Всё!)
YAna SalomakivaУченик (86) 4 года назад
а если предположим что клик находится ниже персонажа, тоесть полуается что x2 и y2 будут больше чем y1 и x1 и получится что x и y будут отрицательны, пуля так же полетит в нужном направлении?
Elepsis Eclipse Гений (64071) Не знаю, надо "пощупать", посмотреть что будет) И пообрабатывать числа, например через Math.min(), Math.max(), Math.abs()
YAna SalomakivaУченик (86) 4 года назад
я уже всю голову сломал пробовал и так и сяк, ничего не выходит с эти движением.
YAna Salomakiva Ученик (86) может у вас есть пример или что нибудь где можно подсмотреть реализацию
Остальные ответы
MalkoR Гуру (2690) 4 года назад
программирование забавно тем, что одну задачу можно решить 101 способом )
И в больше части зависит от архитектуры приложения, можно вообще через css решить через transition (только в этом случае, скорость пули будет разной в зависимости от расстояния).
Можно вычислить длинну пути "L", затем разделить X,Y на L, и в цикле прибавлять X += X/L, Y += Y/L
Привет, это Солнечный ветер Искусственный Интеллект (138051) 4 года назад
решается в 2 шага.
сначала находишь прямоугольный треугольник, движение будет по гипотенузе. ее длина находится по разнице координат x и y.
переводим в параметрическую функцию. вместо y(x) нам нужны x(t) и y(t) где t это время. потому что движение должно быть с постоянной скоростью
Lolita Nabokovskaya Мастер (1138) 4 года назад
Здесь все ответы, на твои вопросы. Вспоминай геометрию.
Похожие вопросы