【发布时间】:2019-06-27 23:55:59
【问题描述】:
对于我的实习,我需要使用 three.js 进行应用,页面上的容器中需要有什么,但它需要对象上的 onclick 功能。问题是我只能在容器中找到关于光线投射的任何东西,现在单击不会得到我需要的对象
onMouseDown(event) {
let s = this;
// calculate mouse position in normalized device coordinates
// (-1 to +1) for both components
s.mouse.x = ( event.clientX / s.renderer.domElement.clientWidth ) * 2 - 1;
s.mouse.y = - ( event.clientY / s.renderer.domElement.clientHeight ) * 2 + 1;
s.intersects = s.raycaster.intersectObjects(s.blocks, true);
for ( var i = 0; i < s.intersects.length;){
s.intersects[ i ].object.material.color.set( 0xff0000 );
console.log(i)
console.log(s.getScene().children)
console.log(s.intersects)
console.log("test 123")
}
if (s.intersects == 0){
console.log(s.mouse.x)
console.log(s.mouse.y)
}
}
编辑:这与Detect clicked object in THREE.js 不同,他不在容器中工作。再加上他对我在任何地方的边距都有一点问题我点击屏幕它没有检测到我需要什么,我需要它只在容器上工作而不是整个网页加上那里的帮助已经过时并且无法正常工作 annymore
【问题讨论】:
-
您是否遗漏了一些代码?因为看起来您没有使用鼠标坐标设置光线投射器。
-
我遗漏了一些代码,是的,我的主要问题已解决,但现在遇到了一个新问题,即点击将看不到对象\
标签: three.js raycasting