2015-11-02 92 views
0

我希望檢測何時點擊了對象。我正在從three.js編輯器生成一個頁面。這是一個輝煌的環境。確定在three.js中點擊的對象

繼續這篇文章的建議(https://mandemeskel.wordpress.com/2013/08/19/mouse-events-raycasting-with-three-js/)我結束了以下代碼。我在發生問題時發表了評論。

function mousedown(event) { 
    var scene = this.parent; 
    var projector = new THREE.Projector(); 
    var mouse_vector = new THREE.Vector3(), 
    mouse = { x: 0, y: 0, z: 1 }, 
    ray = new THREE.Raycaster(new THREE.Vector3(0,0,0), new THREE.Vector3(0,0,0)), 
    intersects = []; 
    mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
    mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 
    mouse_vector.set(mouse.x, mouse.y, mouse.z); 

    // How do I get the camera? 
    projector.unprojectVector(mouse_vector, camera); 

    var direction = mouse_vector.sub(camera.position).normalize(); 

    ray.set(camera.position, direction); 

    var object = scene.getObjectByProperty('uuid', this.uuid, true); 

    intersects = ray.intersectObject(object); 

    if(intersects.length) { 
      alert("hit"); 
      event.preventDefault(); 
    } 
} 

我已經通過修改已發佈頁面中的app.js來臨時解決了這個問題。通過將相機變量移動到全局範圍內,我避開了它,但它顯然是一種巧合。有沒有辦法在不修改app.js的情況下訪問編輯器生成的相機?

var camera; 
var APP = { 
Player: function() { 

....

+0

你的問題是指訪問'在javascript中關閉'。在編寫你需要的代碼之前,你可能需要閱讀它。 – Atrahasis

回答