我正在学习如何在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