var array = [];
//生成6个射线矢量
var array1 = new THREE.Vector3(0,-1,0);
array.push(array1);
array1 = new THREE.Vector3(0,1,0);
array.push(array1);
array1 = new THREE.Vector3(1,0,0);
array.push(array1);
array1 = new THREE.Vector3(-1,0,0);
array.push(array1);
array1 = new THREE.Vector3(0,0,1);
array.push(array1);
array1 = new THREE.Vector3(0,0,-1);
array.push(array1);
var guess = 0;
for(var index = 0; index < 6; index++)
{
var ray = new THREE.Raycaster(camera.position, array[index].normalize());
var collisionResults = ray.intersectObjects(collideMeshList);
if (collisionResults.length > 0 && collisionResults[0].distance < 50) {
flag = 1;
guess = 1;
break;
}
}
if(guess == 0){ //说明六条射线都没有碰撞到物体
flag = 0;
}
if(flag == 1) {
camera.position.x = cameraposition.x;
camera.position.y = cameraposition.y;
camera.position.z = cameraposition.z;
}
else{
cameraposition.x = camera.position.x;
cameraposition.y = camera.position.y;
cameraposition.z = camera.position.z;
}
var array = [];
//生成6个射线矢量
var array1 = new THREE.Vector3(0,-1,0);
array.push(array1);
array1 = new THREE.Vector3(0,1,0);
array.push(array1);
array1 = new THREE.Vector3(1,0,0);
array.push(array1);
array1 = new THREE.Vector3(-1,0,0);
array.push(array1);
array1 = new THREE.Vector3(0,0,1);
array.push(array1);
array1 = new THREE.Vector3(0,0,-1);
array.push(array1);
var guess = 0;
for(var index = 0; index < 6; index++)
{
var ray = new THREE.Raycaster(camera.position, array[index].normalize());
var collisionResults = ray.intersectObjects(collideMeshList);
if (collisionResults.length > 0 && collisionResults[0].distance < 50) {
flag = 1;
guess = 1;
break;
}
}
if(guess == 0){ //说明六条射线都没有碰撞到物体
flag = 0;
}
if(flag == 1) {
camera.position.x = cameraposition.x;
camera.position.y = cameraposition.y;
camera.position.z = cameraposition.z;
}
else{
cameraposition.x = camera.position.x;
cameraposition.y = camera.position.y;
cameraposition.z = camera.position.z;
}