物理演算中編

冬月 今まで散々悩んでいた
当たり判定(物理演算の組み込み)の頃にようやく目処がついてきました
いやぁ、3週間かかってしまいました……

Twitterを見てくださっている人はご存知かと思いますが
12月になって絶望的な仕事量も重なって
精神的にも不安定な時期担っていましたわ
雪乃

蓮 しかも、命には何ら影響もないけど
体が疲れやすいっれいう病気を持ってしまい
集中力が続かない感じにもなってたようだ……

そんなボロボロにもなりながらも
なんとか物理演算のケリが付き添うっていうのが今回の話です
詳しくは続きを読むからどうぞー
鞠奈

冬月 まずおさらいとして
今回開発のゲームではBullet Physicsというゲームでよく使われる
物理エンジンを使用します

Bullet Physics公式ページ

Bullet Physics Wikipedia

当たり判定だけならば妙子だけでも作成可能なのですが
アクションゲームとなると膨大な計算が必要になるため
専用の処理にお任せするということですわね
雪乃

蓮 じゃあ、物理エンジンってなにをしてくれるのか?というと
矩形(ポリゴン)の当たり判定、重力計産、摩擦や加速などの速度調整
と名前の通り物理的移動に関する事をやってくれるんだ

で、想定としてはモデルデータをBullet Physicsに送って
演算結果の座標とかを反映させるだけだと思っていたんだけどね
いや実際にそうなんだけど……
鞠奈

冬月 いざ実装してみると
エラーの嵐
何をやってもエラーが取れないのです……

たださえ時間のない妙子は
焦ってしまって、いろいろ試行錯誤してみたけど
これといって有効な手が出せなかったようね
雪乃

蓮 あるとき、
Bullet Physicsで処理される値を見て
ひらめいたのが始まりです

こちらから送ったデータがいつの間にか壊れてる
サンプルソースを流用してもデータが壊れる
ということは、Bullet Physicsに問題があるのでは……

ということで、
自分の書いたプログラム→Bullet Physicsで、簡単な数値でも
予期しない数値になっていたりしていたことに気づいたんだ
鞠奈

冬月 ネットなどで紹介されてるのは少し古いバージョンのもので
自分が使っているものは最新のもの……
じゃあ、このバージョンを合わせれば動くのでは?と思いわざわざ古いバージョン(2.78)を使ってやってみました

うまくいきましたわ
地面の上にある建物は当たり判定で地面の上に乗っているだけです
いつもの画像でいまいちわかりにくいかもしれませんわね
雪乃

蓮 このおかげで
重力と、当たり判定はクリアできたな
あとはキャラクターを配置して加速度を適応すれば移動処理も完了だ

でも、
まだ終ったわけではなかったり……

鞠奈

冬月 Bullet Physicsのクラスをnewして
deleteするだけで上のえらーになるんです……
何故かメモリ上に居ない状態になっているんです

このような感じで
デモのソースコードをそのまま書いても
エラーに成ってしまいますわ
雪乃

蓮 ということで、
先に進むためにdelete文を切って動かしているため
けたたましいメモリーリークの警告が出てるぞ

こんなの到底出せないので
早い所解決しないとね……
先に進んでいるけど、出口は遠そうだね
鞠奈

気軽にコメントをどうぞ!

この記事に関すること冬月に聞きたいこと等、小さいことでもコメントしていただける嬉しいです。
冬月に直接連絡したい方は下のお問合せフォームをお使いください。(メール送信されます)

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。
※メールアドレスは公開されることは有りません。


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

ゲーム製作の関連記事