al_draw_rotated_bitmap(playerTux, defaultPlayer1.size / 2, defaultPlayer1.size / 2,
defaultPlayer1.pos[0], defaultPlayer1.pos[1], mousePos / mouseSensitivity, 0);
al_draw_rotated_bitmap(playerTux, defaultPlayer2.size / 2, defaultPlayer2.size / 2,
defaultPlayer2.pos[0], defaultPlayer2.pos[1], 0, 0);
この関数は、while ループのループごとに、指定された位置と角度でプレーヤーのビットマップを描画します。キーボードのイベントによって動きが変化し、x 軸でのマウスの動きによってプレーヤーの角度が変化します。mouseSensitivity による除算は無視します (これは内部的な側面です)。マウスを動かすことで、プレーヤーをそれ自体の軸で完全に回転させることが可能であると考えてください。(OBS: 武器の画像はすでにプレイヤーの画像にあるため、武器はプレイヤーと一緒に回転します)。
if (state.buttons & 1) {
al_draw_rotated_bitmap(pistolFire, defaultPlayer1.size / 8, defaultPlayer1.size / 2,
defaultPlayer1.pos[0], defaultPlayer1.pos[1], mousePos / mouseSensitivity, 0); }
ここで、マウスの左ボタンを押すと、武器の端に「火の画像」が表示されます。
これらすべてを考慮して、プレイヤーがマップを移動し (W、A、S、D の各イベントで自身の xPos と yPos を増減)、マップ上に同じ容量を持つ別のプレイヤーがいます。武器を発射するとき (マウスの左ボタンを押すとき)、相手が武器の角度の範囲内にいる場合は、相手を攻撃する必要があります。
質問は次のとおりです。どうすればできますか?
if (state.buttons & 1) {
detectShotColision(); }
武器の角度と両方のプレイヤーの x と y の位置のみを考慮して、このような関数を作成するにはどうすればよいでしょうか?