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);
}
}
그러나 이것은 방향과 각도 사이에 명확한 제한이 있으며 링크가 없습니다.
제가 알고있는 것은 어떻게 든 접하는 비율을 사용하여 직면하고있는 사분면을 계산하고 위치를 조정할 수있는 숫자를주는 함수가 있다는 것입니다. 그러나 나는 기능을 잘 알지 못한다.
내가 할 수 있기를 원하는 것은 위로를 누르면 화살표가 가리키는 방향으로 이동하고 아래를 누르면 뒤로 이동합니다. 그리고 왼쪽과 오른쪽으로 옆으로 치장하십시오. A 및 D 키는 각도를 전환하는 데 사용됩니다.
유용한 알고리즘을 알려 주시면 매우 감사하겠습니다.
편집 : 각도 (0)는 현재 각도를 반환합니다.
당신에게 약간의 평판을주기 위해 upvoted;) –
이 특권을 가져 주셔서 감사합니다. :) – Crusher