在 THREE.js 中,我试图根据鼠标位置在屏幕上移动对象。在看了一些例子之后,它似乎很困难。这是我从一个示例中借来的一些代码,这些示例主要满足我的需要:
function mouseMove(e){
mouse2D.x = ( (e.pageX-canvas.offsetParent.offsetLeft) / canvas.clientWidth ) * 2 - 1;
mouse2D.y = - ( (e.pageY-canvas.offsetParent.offsetTop) / canvas.clientHeight ) * 2 + 1;
if (selected) {
var ray = projector.pickingRay(mouse2D, PGL._camera).ray;
var targetPos = ray.direction.clone().addSelf(ray.origin);
targetPos.subSelf(_offset);
obj.position.x = initPos.x + targetPos.x;
obj.position.y = initPos.y + targetPos.y;
}
}
这适用于在场景中移动直接子级。问题是试图移动具有旋转和/或缩放的父对象的对象。你会怎么处理呢?将对象matrixRotationWorld
应用于运动可能吗?我仍在努力解决这些问题。任何帮助表示赞赏。