私はこれに完全に困惑しています。私は開発中のゲームに C++ と SFML 1.6 を使用していますが、まったくわかりません。発射物 (弾丸など) を作成するにはどうすればよいですか? 私はそれを理解していません。私の寝不足かもしれませんが、わかりません。
私の質問は、マウスの位置に基づいて特定の方向に移動するスプライトを作成するにはどうすればよいですか? (マウスで照準を合わせたトップダウン シューティング ゲームを考えてみてください)
最も簡単な解決策: マウスが Mx,My にあり、船が Sx,Sy にある場合、船からマウスまでの方向を計算します: Dx=Sx-Mx Dy=Sy-My
次に、D を正規化します (これは、長さが 1 になるようにスケーリングすることを意味します):
DLen=sqrt(Dx*Dx + Dy*Dy)
Dx/=DLen;
Dy/=DLen;
ここで、Dx は、弾丸の速度を 1 にするために弾丸を x 軸上で移動させたい距離です。
したがって、各フレームで次のように弾丸を移動します (弾丸の位置: Bx、弾丸の速度: Bs [ピクセル/ミリ秒] フレーム時間 Ft[ミリ秒])
Bx=Bx+Dx*Bs*Ft
By=By+Dy*Bs*Ft
これにより、マウスの方向やゲームのフレームレートとは無関係の速度でマウスの位置に向かって移動する弾丸が得られます。
編集: @MSalters が言うように、マウスが船の真上にあるときに DLen==0 ケースをチェックして、正規化でのゼロ除算エラーを回避する必要があります