0

C# フォームを使用して FPS のようなゲームを作成しています。これは私が書いている最初のゲームなので、気楽にやってください :p とにかく、主なアイデアは、ユーザーのカーソルがキャラクターの上に置かれたときにプログラムが認識するということです。ここで、キャラクターの座標が (X,Y) で、カーソルが 10 の範囲内にあるかどうかを確認したいとします。これを確認するには、forループの 2 つの条件を使用できますが、もっと良い方法があると思います。それを確認する方法と私はそれを知りません。私の意図を誤解している場合は、ここに投稿してください。明確にするよう努めます。ありがとうございました

4

1 に答える 1

3

for ループは必要ありません。
マウス座標が (m_x,m_y) で、char 座標が (x,y) であるとします。
距離を sqrt((m_x-x)*(m_x-x) + (m_y-y)*(m_y-y)) として計算します。距離が 10 未満の場合、マウスは範囲内にあります。

実行時間を短縮するには、sqrt の使用を避けます。つまり、

if (((m_x-x)*(m_x-x) + (m_y-y)*(m_y-y) <100 )
// 範囲内 else
// 範囲外

于 2012-12-22T21:10:43.317 に答える