Я хочу, чтобы мой raycaster искал пересечения только тогда, когда нажата кнопка запуска моего контроллера Vive.
Я думал инициализировать Raycaster с поддельным классом в объектах, изменить его на реальный .prop
и собрать intersectedEls
let rightHand = document.getElementById('rightController');
rightHand.setAttribute('line', 'color: purple; opacity: 1;');
rightHand.setAttribute('raycaster', { showLine: true, objects: '.none' });
rightHand.setAttribute('cursor', { downEvents: ['triggerdown'], upEvents: ['triggerup'], rayOrigin: 'entity', fuse: false });
let scene = document.getElementById('scene');
scene.addEventListener('triggerdown', this.myTriggerDown);
scene.addEventListener('triggerup', this.myTriggerUp);
myTriggerDown() {
let rightHand = document.getElementById('rightController');
rightHand.setAttribute('raycaster', { showLine: true, objects: '.prop' });
rightHand.components['raycaster'].refreshObjects();
let raycaster = rightHand.components['raycaster'];
let intersectedEls = raycaster.intersectedEls;
if (typeof intersectedEls !== 'undefined' && intersectedEls.length > 0) {
scene.components['resize'].enableResize(intersectedEls[0]);
} else {
console.log('1234 no intersections')
}
}
myTriggerUp() {
let rightHand = document.getElementById('rightController');
rightHand.setAttribute('raycaster', { showLine: true, objects: '.none' });
}
К сожалению, я продолжаю получать сообщение console.log('1234 no intersections')
.
Я попытался добавить строку refreshObjects()
без эффектов.
Я попытался переключить свойство enabled
вместо изменения objects
, но у меня все тот же результат.
Любая помощь будет оценена. Спасибо
редактирование:
если я ищу пересечения в триггерной части, это работает. но это обходной путь, который также лишает меня возможности использовать пересекаемый элемент и делать что-то, удерживая нажатой кнопку. Я все еще хотел бы знать, почему это не работает, чтобы включить луч / изменить целевые объекты и немедленно искать пересечения.