【发布时间】:2019-10-01 10:35:12
【问题描述】:
我目前正在尝试制作一个“地牢生成器”——我有一组场景对象,每个对象内部都有一个 EntryNode、ExitNode 和 Room 网格。我无法根据前一个房间 ExitNode 设置 Room 对象的位置。
模型的结构如下:
Scene
L Entry_Node (instanceof THREE.Mesh) position: 0,0,0
L Room (instaceof THREE.Group), positiom 0,0,23
L (Several Children that are irrelevant)
L Exit_Node position: 0,0,46
不能保证房间大小一致或始终相同,否则会很简单。
我目前正在创建一个这样的房间:
_generateRoom(name) {
let room = common.assets.model(name); // Returns THREE.Scene with EntryNode, Room and ExitNode as children
const entryNode = room.children.find(e => e.name.startsWith('Node_Entry'));
const exitNode = room.children.find(e => e.name.startsWith('Node_Exit'));
return [room, entryNode, exitNode];
}
我正在尝试像这样连接多个这样的房间:
_preGenerate(count) {
let rooms = [];
for (let i = 0; i < count; i++) {
const room = this._generateRoom('endless_straight3'); // Returns an array as [Room, EntryNode, ExitNode]
this._stage.add(room[0]);
room[0].updateMatrixWorld();
if (rooms.length > 0) {
this._exitNode.updateMatrixWorld(true);
this._exitNode.getWorldPosition(room[0].position);
} else {
room[0].position.setScalar(0);
}
this._exitNode = room[2];
console.log(room[0].position);
rooms.push(room);
}
}
但是,问题在于this._exitNode.getWorldPosition(room[0].position); - 它总是返回(看似)出口节点的本地位置 - THREE.Vector3(0, 0, 46)
我希望它根据世界位置返回出口节点的位置 - 第一个房间为 46,第二个房间为 92,第三个房间为 138,依此类推。 不知道这里出了什么问题,感谢任何帮助!
抄送。 https://discourse.threejs.org/t/trouble-getting-world-position-of-object/7540
【问题讨论】:
标签: three.js