使用threeJS引入模型进行点击事件,其实有一个是将获取到坐标位置进行webgl坐标系的转换
全屏状态:
全屏状态下直接利用window.innerWidth和 window.innerHeight进行计算即可,代码如下
// 校验控制器旋转的时候不触发点击事件
boxClickEvent() {
const self = this;
let x, y;
//获取鼠标按下的位置
this.renderer.domElement.addEventListener('mousedown', function (event) {
x = event.pageX;
y = event.pageY;
});
// 鼠标释放
this.renderer.domElement.addEventListener('mouseup', function (event) {
const newX = event.pageX;
const newY = event.pageY;
if (x == newX && y == newY) {
// 位置相同的操作
self.onDocumentMouseDown(event);
}
});
},
//获取点击的事件
onDocumentMouseDown(event) {
const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2();
//转换为webgl坐标系下的鼠标位置
mouse.x = (event.clientX / window.innerWidth) * 2 - 1; // 全屏状态
mouse.y = -(event.clientY / window.