для игры нада чтобы герой поворачивался к направлению курсора мышки.
есть 8 направлений (север. северо-восток, восток, юго-восток, юг итд)
еще есть координаты точки на экране (герой) (допустим 600, 400) и координаты мышки
нужно чтобы взависимости от координат определялось направление
я конечно придумал способ но он мне неочень понравился
уверен что есть способ получше.
Свой вариант небуду приводить
Язык я думаю тоже роли неиграет (пишите на юбом) , главное сама суть
Другие языки программирования и технологии
Подкиньте идею Как определить направление от Некой точки на экране до курсора мыши
если глубоко не вдаваться в математику
a = mousex - herox;
b = mousey - heroy;
c = sqrt(a*a + b*b);
cosinus = a/c
t = round(cosinus * 2); // округление в сторону ближайшего целого
теперь при mousey >= heroy
if t == 2 восток
if t == 1 юговосток
if t == 0 юг
if t == -1 югозапад
if t == -2 запад
при mousey < heroy
if t == 2 восток
if t == 1 северовосток
if t == 0 север
if t == -1 северозапад
if t == -2 запад
это если начало координат в верхнем левом углу.
иначе (если в нижнем левом) - наоборот
при mousey < heroy
if t == 2 восток
if t == 1 юговосток
if t == 0 юг
if t == -1 югозапад
if t == -2 запад
при mousey >= heroy
if t == 2 восток
if t == 1 северовосток
if t == 0 север
if t == -1 северозапад
if t == -2 запад
не забудьте сделать поправку на случай деления на 0 когда координаты мыши и координаты героя равны
a = mousex - herox;
b = mousey - heroy;
c = sqrt(a*a + b*b);
cosinus = a/c
t = round(cosinus * 2); // округление в сторону ближайшего целого
теперь при mousey >= heroy
if t == 2 восток
if t == 1 юговосток
if t == 0 юг
if t == -1 югозапад
if t == -2 запад
при mousey < heroy
if t == 2 восток
if t == 1 северовосток
if t == 0 север
if t == -1 северозапад
if t == -2 запад
это если начало координат в верхнем левом углу.
иначе (если в нижнем левом) - наоборот
при mousey < heroy
if t == 2 восток
if t == 1 юговосток
if t == 0 юг
if t == -1 югозапад
if t == -2 запад
при mousey >= heroy
if t == 2 восток
if t == 1 северовосток
if t == 0 север
if t == -1 северозапад
if t == -2 запад
не забудьте сделать поправку на случай деления на 0 когда координаты мыши и координаты героя равны
Нужно за каждую итерацию игрового цикла возвращать куда-либо координаты мышки, ну и работать с ними.
Первое что пришло на ум.
Первое что пришло на ум.
Не уверен, что всё правильно, но реализовать можно где-то так:
Думаю, что можно воспользоваться полярными координатами.
Новые координаты определяются по формулам:
x = r * cos(alpha)
y = r * sin(alpha)
x, y - коорд. курсора.
r - радиус. В нашем случае расстановите от героя до точки, которое легко определить, как гипотенузу прямоугольного треугольника.
alpha = arccos(x / r) или alpha = arcsin(y / r)
Думаю, что можно воспользоваться полярными координатами.
Новые координаты определяются по формулам:
x = r * cos(alpha)
y = r * sin(alpha)
x, y - коорд. курсора.
r - радиус. В нашем случае расстановите от героя до точки, которое легко определить, как гипотенузу прямоугольного треугольника.
alpha = arccos(x / r) или alpha = arcsin(y / r)
пусть герой будет "стоять" на оси часовой стрелки, а массивы координат экрана соответствуют направлению часовой стрелки (на каждый час по массиву, ну или чаще, в зависимости от необходимой точности)
Похожие вопросы
- Как в Паскале можно описать курсор мыши? Именно вывести его на экран и определить его положение при выполнении программы
- JS-программеры! подскажите пожалуйста код для перемещения объекта курсором мыши.
- turbo pascal 7.0 Определить принадлежность к области точек с заданными координатами!!!
- как на ActionScript сделать растягивающийся квадрат, следующий за курсором мыши (обычно выделение мышкой, при зажатой ле
- Подкиньте идею
- Нужно подкинуть идею создания робота
- Подкиньте идею проекта (программирование)
- Как определить точку внутри треугольника? Turbo Delphi
- t-sql (курсоры и циклы - взаимозаменяемы?)
- Как в visual basic сделать запуск алгоритма щелчком прав. кнопки мыши? Как связать 2 формы и вывести их на экран вместе?