物理キャラクターコントローラー(その3)
ビルに物理形状を割り当てる例です。
https://scrapbox.io/files/6759cc20424b8d88dc21e190.png
Created by cx20.icon
code:js
// ビルの物理形状を設定
const buildingNodes = [
// ビル
"node20", "node22", "node23", "node24", "node25", "node26", "node30",
"node31", "node32", "node33", "node52", "node53", "node54", "node55",
"node56", "node57", "node58", "node59", "node60", "node61", "node62",
"node63", "node64", "node65", "node66", "node175", "node176", "node177",
"node178", "node179", "node186", "node188", "node189", "node191", "node219",
"node220", "node222", "node223", "node224", "node225", "node227", "node228",
"node229", "node230", "node231", "node232", "node233",
// ビルのプリミティブ
"node187_primitive0", "node187_primitive1",
"node192_primitive0", "node192_primitive1",
"node226_primitive0", "node226_primitive1",
// 渡り廊下
"node194", "node196", "node198", "node200", "node202", "node204",
"node216", "node218",
// タワー
"node180", "node190"
];
buildingNodes.forEach(nodeName => {
const buildingMesh = scene.getMeshByName(nodeName);
if (buildingMesh) {
// 物理形状を作成(直方体)
new BABYLON.PhysicsAggregate(
buildingMesh,
BABYLON.PhysicsShapeType.BOX,
{
mass: 0, // 静的な物体として設定
}
);
}
});