Babylon.jsのチュートリアルをやってみるその15
これは
昨日に引き続きBabylon.jsのチュートリアルをやっていく記事です。
自分であとで思い返す用のメモでもあります。
今日の参照
https://doc.babylonjs.com/babylon101/raycasts
Raycastと述語関数
Raycastの続きです。
昨日はRayを使ってcubeを大きくするのをやりました。
たまたま一つしかcubeがなかったのでよかったのですが、
自分からは見えない奥のやつを取得したい場合困ったことになります。
こんな感じに。
ではどうするかというと述語関数を使って 対象とするmeshを指定できるようにします。
// rayの情報を使って対象とするmeshを判定する // 述語関数 // raycastが当たったmeshを受け取って、対象にしたいmeshだったらfalseを返す。 function predicate(mesh) { if (mesh == box || mesh == box) { return false; } return true; } // 呼び出し var hit = scene.pickWithRay(ray, predicate);
すると以下のように奥のcubeが大きくなるようになりました
scene.pickWithRayってなんだろと思ったので以下を参照しています。
doc.babylonjs.com
multiPickWithRay
対象を一つではなく複数にしたい場合はmultiPickWithRayを使います。
// 複数を対象にしたい場合はmultiPickを使います。 var hits = scene.multiPickWithRay(ray); if (hits) { for (var i=0; i<hits.length; i++) { hits[i].pickedMesh.scaling.y += 0.01; } }
複数のcubeが大きくなるようになりました
RayHelperは昨日触ったので
きょうはここまで。
明日はSpritesをやります。