C++ でスプライトの移動角度を計算しようとしています。
現時点では、コンソールを使用して結果を出力しているだけです。
私の問題は、結果がコンソールに表示されるときに、x 軸をマイナスの数値にできないことです。
残念ながら、私は基本的な三角法について学んだばかりなので、数学を間違っているだけなのかわかりません。
例: 角度を 270 に、速度を 1 に選択すると、(-1,0) になるはずだと思っていた新しい座標が (1,-1) としてコンソールに表示されます。
同様に、角度を -90 に、速度を 1 にすると、(0,-1) が得られます。
x がマイナスにならないだけですか?
それとも私は根本的な間違いを犯していますか?
私のコードは以下のとおりです。誰かが私が間違っていることを指摘できれば、それは大歓迎です。
#include <iostream>
#include <cmath>
using namespace std;
const float PI = 3.14159265;
class sprite {
public:
int x;
int y;
int angle;
int speed;
sprite();
};
sprite::sprite() {
x = 0;
y = 0;
angle = 0;
speed = 0;
}
int main() {
int userInput = 0;
sprite mySprite;
cout << "Starting co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
while(userInput != 999) {
cout << "Angle to move: ";
cin >> userInput;
mySprite.angle = userInput;
cout << "Speed to move at: ";
cin >> userInput;
mySprite.speed = userInput;
mySprite.x += ceil(cos(mySprite.angle*PI/180)*mySprite.speed);
mySprite.y += ceil(sin(mySprite.angle*PI/180)*mySprite.speed);
cout << "\n\n";
cout << "New co-ordinates: (" << mySprite.x << "," << mySprite.y << ")\n\n";
}
return 0;
}