VRエンジン作成日記

ひたすらVRエンジンを作っていきます

OBB同士の衝突判定を追加

OBB同士の衝突判定だけど、昨日コミットするところまで行かなかったので修正してコミットしておいた。マルペケさんのサイトを見なかったら、おそらく実装できていなかっただろうと思う。

あと、Color.white とかの固定の値を static readonly にしていた。毎回同じ値を新規で生成する必要がない場面もあるので、1つだけインスタンスを持つ構造にした方が良いだろうと考えてそうした。ただ、white と言いつつどこかの場所で他の色にされては都合が悪いので、JavaScriptの機能を使ってメンバ変数の変更もできないようにした。次のように書くと、メンバ変数の変更ができないオブジェクトになる。

Object.freeze(obj);

フリーズすると、メンバ変数の変更時に例外が発生するようになる。どうやらフリーズ系のメソッドは3種類あるようだ。それぞれ微妙に挙動が違うらしい。

あとはオブジェクトの親子関係の位置、回転、拡大が、まだ想像通りに動いていないケースがあったので修正した。子オブジェクトを追加した時に親オブジェクトの座標空間に再配置する、子オブジェクトを取り外した時にワールド座標に再配置する、の2つがうまく動いていなかった。

 

・関連するコミット

add hit test obb and obb · hikipuro/tea.js@5795e13 · GitHub