IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Преследование мыши, 2d игра а-ля Freelancer
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Собственно сабж. Если кто-то играл в Фрилансер, то вспомнят, что космический корабль управлялся мышью: мышь повернете влево, корабль полетит влево и наоборот. Сейчас пишу подобную 2д игру, проблема именно в сабже. Вот алгоритм на псевдокоде:

Код

Получить координаты мыши и записать в mouse_x, mouse_y;
Посчитать угол между "носом" самолета и курсором мыши через арксинус по формуле:
sin(mouse_А):=(mouse_x-plane_x)/sqrt(sqr(mouse_x-plane_x)+sqr(mouse_y-plane_y));
mouse_A=arcsin(вон той всей штуки);
ЕСЛИ курсор мыши находится в I-IV четвертях (синус положительный), ТО угол таким и остаётся,
ИНАЧЕ mouse_A=-mouse_A+PI (синус отрицательный);

//Теперь у нас есть угол между носом самолета и курсором
//Осталось угол самолета увеличить или уменьшить до угла mouse_A

ЕСЛИ mouse_А<plane_A, ТО plane_A=plane_A-0.01 ИНАЧЕ  plane_A=plane_A+0.01;

Возникает такой глюк: корабль нехочет поворачиваться на 270*. Как только я хочу, чтобы он повернулся с 269 на 271 он вместо 2* делает полный оборот (358*). lol.gif
В общем спасите меня от разрыва мозгов, можно ли избавиться от глюка в этом алгоритме или есть алгоритм получше? Заранее спасибо yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Все, тему можно удалять. Лег спать в пол-четвертого, но разобрался...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 20:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name