Box2DFlash v2.1a : ピンボール 其の六 ゲームテンポ上昇と動作対象オブジェクトのすり抜け対策(CCD)
「ピンボールゲームの楽しさとは何たるか」を調査するために、無料で遊べるピンボールゲームを片っ端からプレイしてみました。結果 一番楽しめたのは、長いフリッパーで勢いよく次々とボールを弾きまくるピンボールゲームでした。ふんわり浮くボールが画面内で弾かれる様を長く眺めているよりも、自分で頻繁に弾いて操作するほうが遊んでいる感が強いのかもしれません。
というわけで今回のサンプルでは、ボール落下速度を上げフリッパーの長さを増加し、ゲームテンポの向上を行なってみました。
動作対象オブジェクトのすり抜け対策
ボール落下速度を上げてみると、ボールがフリッパーをすり抜けてしまうという問題が発生。
何か設定が足りないところはないか ネット上で「Box2D すり抜け」といった単語で調べてみたところ、以下の情報が見つかりました。
動作対象オブジェクト(b2Body)の b2BodyDef.bullet プロパティを true に設定すれば解決との事です。
bodyDef.bullet = true;
すり抜け対処のための衝突判定を continuous collision detection(CCD) と呼ぶ模様。Box2DFlash v2.1a 用のマニュアルではありませんが、以下の Box2D manual の Bullets の項目に説明がありました。
Box2D v2.2.0 User Manual
http://www.box2d.org/manual.html
ただし、この機能を利用すると負荷が増えるため、フレームレートが下がる原因となります。低スペックなPCほど影響がでてきます。
サンプル
swf 画面クリック後 以下のキーで操作を行います。
フリッパー操作 : 左右キー
PAUSE : スペースキー
画面振動 : 上キー
画面中央のスロット得点文字は ボールを見失う原因となってしまうため、後に修正を行います。
[ FLASH ] [ tips ] [ update ] 投稿者 siratama : 2012年01月16日 16:14