ピンボールバーの処理 途中3
両バーを実装&背景ラインオブジェクトを暫定的に配置。
背景ラインオブジェクトを配置してみてボールの自由落下との衝突処理を行ってみたところ、以前作成していたレーザ反射を行うためのライブラリにバグが見つかりました。
サンプル
swf画面クリック後、左右矢印キーでバーが動きます。押しっぱなしでバーは最上段で留まります。
レーザー反射処理のバグ
画面を四角く囲んでいるラインオブジェクトにボールが衝突すると反射しますが、四角の角の点の部分にピンポイントにボールが衝突すると、あらぬ方向に反射し四角の外側にボールが飛び出てしまいます。
レーザー反射処理ではおおまかに
(1) 1フレーム間でボールと衝突したオブジェクト一覧を抽出
(2) ボールとの衝突点が一番近いオブジェクトを最初に衝突したオブジェクトとみなす
(3) (2)のオブジェクトと反射処理を実行
という手順を踏んでおりました。ここで、(2)の衝突点が一番近いオブジェクトの判定が甘かったです。二つの衝突対象オブジェクトがある一点で交わっており、その交点座標にボール軌道が交差した場合、どちらかのオブジェクトとしか衝突していないものとして判定してしまっておりました。
次回はこのバグ修正と、背景オブジェクトをからめたバーとボールとの衝突処理を実装したものをアップする予定。
[ FLASH ] [ tips ] [ update ] 投稿者 siratama : 2006年05月08日 03:12