私はこの「ブレイクアウトスタイル」のゲームを持っています。
中央に大砲、大砲の周りにブロック、ブロックの周りにパッドがあります。これはゲームがどのように見えるかです:
ピクセルあたりの衝突を取得することができ、ボールはブロックとの接触時に次の計算で「反射」します。
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
青い線はボールの方向、黒い線(ベースライン)はブロックの表面です。
方向はラジアンで表された角度です(もちろん度に変換できます)。
ボールは次のように動かされます:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
ここまでは順調ですね。
私の問題は、パッド(小さな色のブロックの周りにある3つの暗いブロックと大きなブロック)で発生します。
向きを変えると、表面の角度が変化します。
それ以上に、ボールも側面に当たるはずなので、打球の方向と新しいボールの移動方向をどのように測定できますか?
ps:必要に応じて、コードと再生可能なswfを提供できます。
編集
OK、角度の問題はVectorsで解決されましたが、側面と後方衝突の問題はまだ残っています。
そのための別の質問を開き、ここにリンクします。