Проект Three.js на iPhone - Проблема событий (Select & Drag Object)
-
25-10-2019 - |
Вопрос
У меня есть строительный проект с Three.js ... Canvas, где вы можете перетаскивать объект и играть с видом камеры ... есть известный пример-«Драггируемые кубики», ну, мой проект довольно похож.
В моем проекте есть 3 основных события: MouseUp / Mousedown / MouseMove ...
Что ж, все было хорошо .... Но теперь я пытаюсь запустить этот код на iPhone, изменяя свои события с помощью TouchStart / Touchmove / Touchend ...
Функция движущегося объекта, кажется, работает нормально, но когда я пытаюсь выбрать объект, щелкнув его, это всегда тот же объект, который был выбран ... и не тот, на который я указываю ....
Я думаю, проблема в этой функции:
function onDocumentMouseDown( event ) {
event.preventDefault();
var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( objects );
if ( intersects.length > 0 ) {
SELECTED = intersects[ 0 ].object;
var intersects = ray.intersectObject( plane );
offset.copy( intersects[ 0 ].point ).subSelf( plane.position );
}
}
У кого -нибудь есть идея, в чем проблема ???
Решение
В этой линии:
var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
Вы используете объект мыши Vector2, но не инициализируете его.
Что -то подобное должно работать:
mouse.x = +(event.targetTouches[0].pageX / window.innerwidth) * 2 +-1;
mouse.y = -(event.targetTouches[0].pageY / window.innerHeight) * 2 + 1;