2013-04-24 87 views
0

我试图重置three.js中最新对象的位置。单击Three.js后重置SELECTED对象的位置

首先我有这样的:

function onDocumentMouseDown(event) { 

      event.preventDefault(); 
      var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5); 
      projector.unprojectVector(vector, camera); 

      var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); 

      var intersects = raycaster.intersectObjects(objects); 

      if (intersects.length > 0) { 

       controls.enabled = false; 

       SELECTED = intersects[ 0 ].object; 

       container.style.cursor = 'move'; 

       //mouse Click goes here 
       buildMenu(); 

      } 

     } 

在我buildMenu功能I位置我的对象是这样的:

function buildMenu(){ 
       camera.position.set(0,60,250);     


       //HERE I POSITION MY SELECTED OBJECT 

       SELECTED.position.x = 0; 
       SELECTED.position.y = 50; 
       SELECTED.position.z = 200; 

       $(document).bind('click',function(){ 
        $(document).click(function(){ 
         scene.remove(overlayBG); 

        **//HERE I TRY TO RESET EVERYTHING BUT NOTHING WORKS : (** 

         }); 
       }); 

       //$('#bg, #menu').fadeIn(100) 

      } 

我以为我可以很容易地通过mesh.position.set重置我的对象(0,0,0)在$(document).click函数内但不起作用。如何检测最新(重新定位)的对象,以及如何重新定位它。

回答

1

我不确定我是否理解正确。

做了一个简单的例子,你不需要为此绑定任何点击事件。 Example is here

//last selected object 
if (SELECTED){ 
    SELECTED.position.set(0,0,0); 
} 
//new selected object 
SELECTED = intersects[ 0 ].object; 
+0

谢谢妮欧塔·乌乎拉,可以帮助:)但是,如果我尝试定位别的东西作为例如SELECTED我的网格,它说它没有定义,你能给我一个提示吗? – 2013-04-25 16:07:36

+0

如果你的函数中的变量是本地的,那么在函数之外它将是未定义的。您可以更新示例以显示您的问题。 – uhura 2013-04-25 18:30:08

+0

嘿Uhura,这里是链接[链接](http://holy-crab.de/WebGL/sites/shop.html)如果你点击多维数据集它提醒名称。想法是点击一块电路板,电路板向相机移动,然后点击电路板旁边的按钮,再次移动到原来的位置。立方体只是一个占位符。谢谢 – 2013-04-25 20:11:10