Я учусь перемещаться по 2D-карте и нуждаюсь в помощи с использованием функций тригонометрии.2D Движение в определенном направлении
Вот мой текущий код.
const Uint8 * key = SDL_GetKeyboardState(NULL);
if(key[SDL_SCANCODE_D]){
if(render_arrow){
arrow.Angle(1);
}
}
if(key[SDL_SCANCODE_A]){
if(render_arrow){
arrow.Angle(-1);
}
}
if(key[SDL_SCANCODE_LEFT]){
if(render_arrow){
arrow.set_location(arrow.X_Co() - 1, arrow.Y_Co());
}
}
if(key[SDL_SCANCODE_RIGHT]){
if(render_arrow){
arrow.set_location(arrow.X_Co() + 1, arrow.Y_Co());
}
}
if(key[SDL_SCANCODE_UP]){
if(render_arrow){
arrow.set_location(arrow.X_Co(), arrow.Y_Co() - 1);
}
}
if(key[SDL_SCANCODE_DOWN]){
if(render_arrow){
arrow.set_location(arrow.X_Co(), arrow.Y_Co() + 1);
}
}
Но это имеет очевидные ограничения и отсутствие связи между направлением и углом.
Что я знаю, так это то, что есть функция, которая каким-то образом использует коэффициент касательной для вычисления квадранта, с которым вы сталкиваетесь, и дает вам некоторые номера для настройки местоположения. Однако я не знаю функции и как правильно ее использовать.
Что бы я хотел, чтобы иметь возможность сделать это, стрелка перемещается в направлении, указывающем, когда я нажимаю UP, а назад, когда нажимаю DOWN. И чтобы сражаться сбоку с ЛЕВОЙ и ПРАВОЙ. Клавиши A и D используются для поворота угла.
Любые полезные алгоритмы, которые вы, возможно, знаете, будут очень признательны.
Редактировать: Угол (0) возвращает текущий угол.
, чтобы дать вам некоторую репутацию;) –
Спасибо за это privilige. :) – Crusher