gpt4 book ai didi

javascript - 三J中使用正交相机时如何选择对象

转载 作者:行者123 更新时间:2023-11-28 07:57:31 26 4
gpt4 key购买 nike

我正在运行一个等距关卡,并且正在尝试选择关卡内的对象。

我查看了一些 Stackoverflow 答案,包括这个 Orthographic camera and selecting objects with raycast但目前似乎没有任何效果。出了问题,也许与我的相机设置有关,所以这是我正在使用的相关代码。

// set up camera
scope.camera = new THREE.OrthographicCamera( - scope.cameraDistance * aspect, scope.cameraDistance * aspect, scope.cameraDistance, - scope.cameraDistance, - height, 1000 );
scope.camera.position.set(0 , 0 , 0);
scope.camera.rotation.order = scope.rotationOrder; // = "YXZ"
scope.camera.rotation.y = - Math.PI / 4;
scope.camera.rotation.x = Math.atan(- 1 / Math.sqrt(2));

当我循环遍历矩阵并添加图 block 时,我将它们全部添加到 new THREE.Object3D() 中,然后将该对象添加到场景中。我的 onMouseMove 事件如下所示

onMouseMove:function(event) {
event.preventDefault();

var scope = Game.GSThree,
$container = $(scope.container.element),
width = $container.width(),
height = $container.height(),
vector,
ray,
intersects;

scope.mouse.x = (event.clientX / width) * 2 - 1;
scope.mouse.y = - (event.clientY / height) * 2 + 1;

vector = new THREE.Vector3(scope.mouse.x , scope.mouse.y , 0.5);
ray = scope.projector.pickingRay(vector , scope.camera);
intersects = ray.intersectObjects(scope.tiles.children);

if(intersects.length) {
console.log(intersects[0]);
}
}

现在的问题是有些事情非常不对劲。当光线远离物体时,它会与物体相交,并且似乎一次会与 tiles 的多个子物体相交。如果我记录 intersects.length 它有时会返回 3、2 或 1 个对象。以防万一它是相关的;我的每个对象网格的 Material 是一个 new new THREE.MeshFaceMaterial() ,其中包含传入的 6 个 new THREE.MeshBasicMaterial() 的数组。

有什么想法吗?

最佳答案

这永远是最愚蠢的事情;我的容器元素上有 padding-left:250px; 。删除它并且它有效。始终纠正您的偏移!

关于javascript - 三J中使用正交相机时如何选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25882885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com