我试图在场景中获得良好的鼠标移动,以便我可以围绕对象旋转。
我有两个问题,我可以弄清楚如何限制运动,使其永远不会在 Y 轴上旋转低于 0 度。 (我不想从下面看到物体,只想从上面看到)
而我想不通的第二件事就是如何让动作变得流畅。现在我在 jsfiddle 中实现的是相机在开始旋转之前移回其起始位置。
My try: http://jsfiddle.net/phacer/FHD8W/4/
这是我不明白的部分:
var spdy = (HEIGHT_S / 2 - mouseY) / 100;
var spdx = (WIDTH / 2 - mouseX) / 100;
root.rotation.x += -(spdy/10);
root.rotation.y += -(spdx/10);
我想要什么而不使用额外的库:http://www.mrdoob.com/projects/voxels/#A/afeYl
您可以使用此代码旋转场景。
为了确保旋转不低于 0,模拟向量 (0,0,1) 的旋转并检查向量的 y 是否为负。
var mouseDown = false,
mouseX = 0,
mouseY = 0;
function onMouseMove(evt) {
if (!mouseDown) {
return;
}
evt.preventDefault();
var deltaX = evt.clientX - mouseX;
var deltaY = evt.clientY - mouseY;
mouseX = evt.clientX;
mouseY = evt.clientY;
rotateScene(deltaX, deltaY);
}
function onMouseDown(evt) {
evt.preventDefault();
mouseDown = true;
mouseX = evt.clientX;
mouseY = evt.clientY;
}
function onMouseUp(evt) {
evt.preventDefault();
mouseDown = false;
}
function addMouseHandler(canvas) {
canvas.addEventListener('mousemove', function (e) {
onMouseMove(e);
}, false);
canvas.addEventListener('mousedown', function (e) {
onMouseDown(e);
}, false);
canvas.addEventListener('mouseup', function (e) {
onMouseUp(e);
}, false);
}
function rotateScene(deltaX, deltaY) {
root.rotation.y += deltaX / 100;
root.rotation.x += deltaY / 100;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)