画面の中央で戦車を回転させ、左ボタンをクリックすると、小さな発射物がその場所に移動する、小さな 2D 戦車砲塔ゲームをやっています。
私は現在、現在の場所と目的の場所があるポイントにいます。今行う必要があるのは、これらの 2 つのポイントの大きさを取得することです。これは 1 または 0 を返す必要があります。
これは私の C++ VectorClass マグニチュード関数です:
float vector2D::magnitude(vector2D vec2)//<! Vector magnitude
{
float result;
result = (sqrt(x*vec2.x)+(y*vec2.y));
return result;
}
これは、希望する現在の場所を正規化するコードです。
currentPos.x = laserTexture.getSize().x/2.0f;
currentPos.y = laserTexture.getSize().y/2.0f;
desiredPos.x = sf::Mouse::getPosition().x;
desiredPos.y = sf::Mouse::getPosition().y;
normalisedLocation = magnitude(desiredPos - currentPos);
現在の位置は、画面中央の固定回転ポイントである、laserTexture の中央に関連付けられています。
私の目的の場所は、X と Y の位置を返すマウス クリックです (これは動作します)。
数学は私の得意分野ではないので、このようなことをプログラミングすることになると、他の人よりも苦労します。
私の最終目標は、正規化された位置を取得することです。次に、マウスの左ボタンをクリックすると、戦車の砲塔が発砲し、発射体が目的の位置に移動します。
明確にするために:
- 私のマグニチュード関数は正しいですか?
- 希望する位置と現在の位置を正しく正規化していますか?
ありがとう