Javascript Three.js单击对象

Javascript Three.js单击对象,javascript,three.js,Javascript,Three.js,我一直在努力让榜样对我有用。我快到了。 我的问题是我没有使用全屏画布。我使用的是一个较小的div,根据分辨率的不同,它的位置可能会有所不同 我的工作是获取这个div中鼠标点击的坐标,点击对象也可以。但是所有东西都有一点偏移,可点击的区域比对象本身大 所以我的问题是,我怎样才能使这更准确 这段代码可以在我的浏览器中使用,但不能在JSFIDLE中使用。 在这种情况下,我如何单击我的对象 我认为180行是错误的 var vector = new THREE.Vector3((x / WIDTH) /

我一直在努力让榜样对我有用。我快到了。 我的问题是我没有使用全屏画布。我使用的是一个较小的div,根据分辨率的不同,它的位置可能会有所不同

我的工作是获取这个div中鼠标点击的坐标,点击对象也可以。但是所有东西都有一点偏移,可点击的区域比对象本身大

所以我的问题是,我怎样才能使这更准确

这段代码可以在我的浏览器中使用,但不能在JSFIDLE中使用。 在这种情况下,我如何单击我的对象

我认为180行是错误的

var vector = new THREE.Vector3((x / WIDTH) / 1 - 1, -(y / HEIGHT) / 1 + 1, 0.5);

你的关系非常密切。最大的问题是使用旧的r54库。从r58开始,光线投射变得更好了。所以,看看这个新提琴吧,我删除了r54链接,并向github.io添加了一个外部资源

另外,您是正确的,第180行需要稍微调整一下,使其看起来像这样:

var vector = new THREE.Vector3((x / WIDTH) * 2 - 1, -(y / HEIGHT) * 2 + 1, 0.5);

这应该能帮你解决问题。最大的问题是使用旧的r54库。从r58开始,光线投射变得更好了。所以,看看这个新提琴吧,我删除了r54链接,并向github.io添加了一个外部资源

另外,您是正确的,第180行需要稍微调整一下,使其看起来像这样:

var vector = new THREE.Vector3((x / WIDTH) * 2 - 1, -(y / HEIGHT) * 2 + 1, 0.5);

那应该就行了

谢谢的重复,差不多就行了。但它只有在div被修复的情况下才有效。目前我的div是绝对的。知道如何使其工作吗?找到了一种固定位置的方法。很高兴听到,是的,要获得正确的嵌套偏移值以使鼠标坐标正好位于元素上可能会很挑剔。谢谢,基本上做到了。但它只有在div被修复的情况下才有效。目前我的div是绝对的。知道如何使其工作吗?找到了一种固定位置的方法。很高兴听到,是的,要获得正确的嵌套偏移值以使鼠标坐标正好位于元素上,可能会很挑剔。