0

私は現在、趣味で初めてのゲーム (および C++ アプリケーション) を開発していますが、問題が発生し、その回避方法がわかりません。もちろん、どんな助けも大歓迎です。

私の問題は次のとおりです。

クリックするか、キーボードのキーを押すたびに、マウスの座標が非常に奇妙な値にジャンプし、1 秒後に通常の値に戻ります。これにより、弾丸の軌道などのベクトル計算が台無しになります。

例: http://puu.sh/3xjFq.jpg

コンソール ウィンドウで確認できるように、Y 座標は正しい値 (628) から (-858993460)、次に (65536)、そして再び正しい値にジャンプします。

マウス座標を取得するために使用しているコード:

cout << "X: " << event.mouseMove.x << " Y: " << event.mouseMove.y << endl;

これは、計算のためにマウス座標を取得するために使用しているコードと同じです。

私の問題の原因は、SFML 自体とその動作にあると思います。マウス座標を取得するための代替手段は何ですか?

私はまだこれに非常に慣れていないことに注意してください(先週開始)ので、すべてをできるだけシンプルに保つようにしてください.

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

3

イベントは SFML の共用体に格納されます。組合がどのように機能するかを知らない場合は、必ずそれについて読む必要があります (ウィキペディア)。一言で言えば、異なる変数がメモリ内の同じスペースを共有します。これにより、間違った型で解釈すると明らかに奇妙な値が得られます。

あなたが書くとき:

event.mouseMove.x/y

メンバーの値xまたはy、見ているイベントがsf::Event::MouseMoved. ボタンが押されたとき (つまり、 type のイベントsf::Event::MouseButtonPressed) にマウスの座標を確認したい場合は、次を使用する必要があります。

event.mouseButton.x/y
于 2013-07-07T21:08:53.800 に答える