SyntaxHighlighter

2012年2月12日日曜日

散弾銃っぽいの実装した


前回b2Filter設定したので一度に沢山の弾が出せるようになった。上画像は16発に拡散したもの。
そのままだと、近距離で密集した敵を蹴散らすには物足りなかったので、貫通オプションと反射オプションを実装。近距離では弾が貫通する、みたいに設定するといい感じ。反射は自殺してるようにしか見えないので微妙(笑)

反射は単純な接触カウントと、前回当たったオブジェクトかどうかの判定のみで実現している。
貫通は上に加えて、接触対象が敵の場合、弾側は物理衝突の影響を受けない、とした。
普通にゲーム作ったら反射の方が複雑そうなのに、物理エンジンの上だと貫通の方が特殊だという事例。

b2ContactLisner使っている限りは連続Hitしないので、現状「前回当たったオブジェクト かどうかの判定」はいらないのだけど、弾に当たった敵が弾より速い速度でふっ飛んだりするとアウトなので、とりあえず付けた。便利そうなので親クラスに持たせてもいいかもしれない。


以下、その他の話題。

Googleのスタイルガイドが大変参考になります。C++は色々ハマりやすい言語らしいので、迷ったときはここの規約に従っておけ!ってなるのがすごく楽。親→子とするのにdynamic_castを使いそうになったけど、設計に問題がある可能性があると言ってくれているので省みるきっかけになりました。

あと、ETERNAL CITY 2とがOrc Must Dieが気になってる。目指したいノリとして結構近いのでどっちかプレイしてみようかな。商業の壁に心折れてしまうかもしれないけどw

0 件のコメント:

コメントを投稿