我正在學習如何在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鍵用於轉動角度。
任何有用的算法,你可能知道將不勝感激。
編輯:Angle(0)返回當前角度。
upvoted給你一些聲譽;) – 2014-09-01 12:43:27
感謝這個privilige。 :) – Crusher 2014-09-02 10:54:29