5

我目前正在使用新的 Babylon.js 框架做一个小项目。我遇到的问题之一是我基本上有两个网格。其中一个网格应该是背景,另一个应该跟随光标以标记您要在另一个网格上定位的位置。问题是,当我将目标网格移动到光标的位置时,当我使用 scene.pick 时,它会阻挡背景网格,导致另一个网格的位置设置在自身上。

使用scene.pick时有什么方法可以忽略目标网格,以便我只选择背景网格还是可以使用其他方法?如果不是,那么实现这种功能以基本上只通过某些网格进行光线投射的步骤是什么?

如果您需要代码示例或任何其他形式的描述,请告诉我。谢谢!

4

1 回答 1

10

好的,这很容易。

所以,我们有两个网格。一叫“地”,二叫“游标”。如果您只想在地面上选择,您有两种解决方案:

第一的:

var ground = new BABYLON.Mesh("ground",scene);
ground.isPickable = true ; 
var cursor = new BABYLON.Mesh("cursor", scene);
cursor.isPickable = false;  

...

var p = scene.pick(event.clientX, event.clientY); // it return only "isPickable" meshes
...

第二:

var ground = new BABYLON.Mesh("ground",scene);
var cursor = new BABYLON.Mesh("cursor", scene);

...

var p = scene.pick(event.clientX, event.clientY, function(mesh) {
    return mesh.name == "ground";  // so only ground will be pickable
}); 
...

问候。

于 2014-05-12T14:41:02.607 回答