2013-11-13 2 views
3

В настоящее время я работаю над небольшим проектом, используя новую структуру Babylon.js. Одна из проблем, с которыми я столкнулся, состоит в том, что у меня в основном две ячейки. Предполагается, что одной из ячеек является фон, а другой должен следовать курсору, чтобы отметить, где на другой сетке вы нацеливаетесь. Проблема в том, что когда я перемещаю сетку таргетинга в позицию курсора, он блокирует фоновую сетку, когда я использую scene.pick, в результате чего другая сетка имеет свою позицию, установленную на себе.Babylon.js Mesh Picking & Ignoring Some Meshes

Есть ли способ игнорировать таргетинг-сетку при использовании scene.pick, так что я выбираю только фоновую сетку или есть какой-то другой метод, который я мог бы использовать? Если нет, то каковы были бы шаги для реализации такого рода функций, чтобы в основном расистствовать только через определенные сетки?

Если вам нужны образцы кода или любые другие формы описания, дайте мне знать. Благодаря!

ответ

7

Хорошо, это легко.

Итак, у нас есть две сетки. Один из них называется «земля», второй «курсор». Если вы хотите выбрать только на земле, у вас есть два решения:

Первое:

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 
}); 
... 

приветы.