今まで散々悩んでいた 当たり判定(物理演算の組み込み)の頃にようやく目処がついてきました いやぁ、3週間かかってしまいました…… |
Twitterを見てくださっている人はご存知かと思いますが 12月になって絶望的な仕事量も重なって 精神的にも不安定な時期担っていましたわ |
しかも、命には何ら影響もないけど 体が疲れやすいっれいう病気を持ってしまい 集中力が続かない感じにもなってたようだ…… |
そんなボロボロにもなりながらも なんとか物理演算のケリが付き添うっていうのが今回の話です 詳しくは続きを読むからどうぞー |
まずおさらいとして 今回開発のゲームではBullet Physicsというゲームでよく使われる 物理エンジンを使用します |
当たり判定だけならば妙子だけでも作成可能なのですが アクションゲームとなると膨大な計算が必要になるため 専用の処理にお任せするということですわね |
じゃあ、物理エンジンってなにをしてくれるのか?というと 矩形(ポリゴン)の当たり判定、重力計産、摩擦や加速などの速度調整 と名前の通り物理的移動に関する事をやってくれるんだ |
で、想定としてはモデルデータをBullet Physicsに送って 演算結果の座標とかを反映させるだけだと思っていたんだけどね いや実際にそうなんだけど…… |
いざ実装してみると エラーの嵐 何をやってもエラーが取れないのです…… |
たださえ時間のない妙子は 焦ってしまって、いろいろ試行錯誤してみたけど これといって有効な手が出せなかったようね |
あるとき、 Bullet Physicsで処理される値を見て ひらめいたのが始まりです |
こちらから送ったデータがいつの間にか壊れてる
サンプルソースを流用してもデータが壊れる
ということは、Bullet Physicsに問題があるのでは……
ということで、 自分の書いたプログラム→Bullet Physicsで、簡単な数値でも 予期しない数値になっていたりしていたことに気づいたんだ |
ネットなどで紹介されてるのは少し古いバージョンのもので 自分が使っているものは最新のもの…… じゃあ、このバージョンを合わせれば動くのでは?と思いわざわざ古いバージョン(2.78)を使ってやってみました |
うまくいきましたわ 地面の上にある建物は当たり判定で地面の上に乗っているだけです いつもの画像でいまいちわかりにくいかもしれませんわね |
このおかげで 重力と、当たり判定はクリアできたな あとはキャラクターを配置して加速度を適応すれば移動処理も完了だ |
でも、 まだ終ったわけではなかったり…… |
Bullet Physicsのクラスをnewして deleteするだけで上のえらーになるんです…… 何故かメモリ上に居ない状態になっているんです |
このような感じで デモのソースコードをそのまま書いても エラーに成ってしまいますわ |
ということで、 先に進むためにdelete文を切って動かしているため けたたましいメモリーリークの警告が出てるぞ |
こんなの到底出せないので 早い所解決しないとね…… 先に進んでいるけど、出口は遠そうだね |