2013-04-24 47 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