我結束了周圍設置連接到相機我的對象一個立方體,通過累加頂點拍攝光線,像這樣的:
vertices = coll.getObject().geometry.vertices;
rad = coll.getObject().boundRadius+1;
var directions = {
"up": [4,1],
"down": [6,2],
"front": [3,4],
"back": [7,0],
"left": [5,6],
"right": [1,2],
};
var collisions = {
"up": {},
"down": {},
"front": {},
"back": {},
"left": {},
"right": {},
};
for (key in directions){
(directions[key].length > 1) ? localVertex = vertices[directions[key][0]].clone().addSelf(vertices[directions[key][1]].clone()) : localVertex = vertices[directions[key][0]].clone();
globalVertex = coll.getObject().matrix.multiplyVector3(localVertex);
directionVector = globalVertex.subSelf(coll.getObject().position);
ray = new THREE.Ray(coll.getObject().position.clone(), directionVector.clone().normalize(), 0, 1000);
intersects = ray.intersectObjects(obj, true);
if (intersects.length > 0) {
distance = intersects[ 0 ].distance;
if (distance >= 0 && distance <= rad) {
collisions[key] = intersects[ 0 ];
} else {
collisions[key] = false;
}
} else {
collisions[key] = false;
++falseCount;
}
}
}
return (falseCount !== 6) ? collisions : false;
這是一個更好一點,但它仍然依賴,如果我的相機在座標接近(0,0,0),不知道發生了什麼事:'VAR localVertex = coll.getObject()。 position.clone(); \t \t \t var globalVertex = coll.getObject()。matrix.multiplyVector3(localVertex); \t \t \t var directionVector = globalVertex.subSelf(coll.getObject()。position.clone()); \t \t \t射線=新THREE.Ray(。coll.getObject()position.clone(),directionVector.clone()正常化()); \t \t \t \t \t \t //ray.origin.addSelf(ax.clone().multiplyScalar(rad/2)); \t \t \t helper.setDirection(ray.direction.clone()); \t \t \t helper.position = ray.origin.clone();' – eleventigers