0
我有一個透視相機,並希望使用Raycasting查找播放器前面的物體。我無法找到關於如何執行此操作的任何教程,而不是使用鼠標指針來點擊我不想做的對象。我在哪裏可以找到如何做到這一點,或者我如何自己實現這一點?或者我只是單獨使用raycaster?使用光線投射檢查透視相機前面的物體與第一人稱控制
我有一個透視相機,並希望使用Raycasting查找播放器前面的物體。我無法找到關於如何執行此操作的任何教程,而不是使用鼠標指針來點擊我不想做的對象。我在哪裏可以找到如何做到這一點,或者我如何自己實現這一點?或者我只是單獨使用raycaster?使用光線投射檢查透視相機前面的物體與第一人稱控制
這很簡單。 基於光線投影例如與地形 http://threejs.org/examples/#webgl_geometry_terrain_raycast 代碼,並在此引用 http://threejs.org/docs/#Reference/Core/Raycaster 你可以看到所有你需要做的就是改變Raycaster構造函數的第二個參數,在相同的方向指向一個向量相機呢。 於是從例如
var mouseX = (event.clientX/window.innerWidth) * 2 - 1;
var mouseY = -(event.clientY/window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mouseX, mouseY, camera.near);
// Convert the [-1, 1] screen coordinate into a world coordinate on the near plane
var projector = new THREE.Projector();
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
下面的代碼變得
var vector = new THREE.Vector3(0, 0, -1);
vector = camera.localToWorld(vector);
vector.sub(camera.position); // Now vector is a unit vector with the same direction as the camera
var raycaster = new THREE.Raycaster(camera.position, vector);
使用這個總是應該在創建獨立的攝像頭使用,或者它的類型的raycaster該選擇對象由相機指出,控制。
實例化一個'Raycaster',你可以重用。設置raycaster的原點和單位長度方向矢量。調用'Raycaster.intersectObjects()'。如果您遇到問題,請發佈您的代碼。 – WestLangley 2014-10-16 20:30:45