Question

J'ai la construction de projet avec Three.js ... toile où vous pouvez faire glisser l'objet et jouer avec la vue de la caméra et ... il y a un célèbre exemple- « Draggable cubes », bien mon projet est assez similaire.

Sur mon projet il y a 3 événements principaux: mouseup / mousedown / mousemove ...

tout était bien ok .... mais maintenant je suis en train d'exécuter ce code sur iPhone, en changeant mes événements avec touchstart / touchmove / touchEnd ...

La fonction d'objet en mouvement semble fonctionner très bien, mais quand je suis en train de sélectionner l'objet en lui cliquant, il est toujours le même objet qui été sélectionné ... et non celui que je suis en pointant sur ....

Je suppose que le problème est avec cette fonction:

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

            }
}

est-ce que quelqu'un a une idée quel est le problème ???

Était-ce utile?

La solution

dans cette ligne:

var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );

Vous utilisez l'objet souris Vector2 mais vous n'initialize pas.

Quelque chose comme cela devrait fonctionner:

mouse.x = +(event.targetTouches[0].pageX / window.innerwidth) * 2 +-1;

mouse.y = -(event.targetTouches[0].pageY / window.innerHeight) * 2 + 1;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top