使元素旋转到鼠标位置,再旋转一次
Making element rotate to mouse position, after another rotation
我正在尝试制作一种坦克模拟器。它严格地在 div 上,而不是在 canvas 等上。它已经按照我想要的方式旋转和移动 forward/backward,但是旋转炮塔有点问题。我到达了炮塔旋转到鼠标指针的地步,但是当坦克主体旋转时,炮塔旋转没有考虑到它(它与坦克主体一起旋转)。有谁知道如何让它工作以便炮塔始终指向鼠标光标?
最好是纯 JS。
有点大,贴不出来,所以我就link到fiddle:
https://jsfiddle.net/9pom714a/
鼠标移动处理程序示例:
window.addEventListener('mousemove', (e) => {
mouseX = e.clientX - field.offsetLeft;
mouseY = e.clientY - field.offsetTop;
turretAngle = Math.atan2(mouseX - turretBaseX, -(mouseY - turretBaseY)) * (180/Math.PI);
turretBase.style.transform = 'rotate(' + turretAngle + 'deg)';
})
我知道代码很乱,我会在一切正常后重构它 ;)
像这样将 tankAngle 减去炮塔角度旋转:
window.addEventListener('mousemove', (e) => {
mouseX = e.clientX - field.offsetLeft;
mouseY = e.clientY - field.offsetTop;
turretAngle = Math.atan2(mouseX - turretBaseX, -(mouseY - turretBaseY)) * (180/Math.PI);
turretAngle -= tankAngle;
turretBase.style.transform = 'rotate(' + turretAngle + 'deg)';
})
已更新 fiddle:https://jsfiddle.net/9pom714a/1/
我正在尝试制作一种坦克模拟器。它严格地在 div 上,而不是在 canvas 等上。它已经按照我想要的方式旋转和移动 forward/backward,但是旋转炮塔有点问题。我到达了炮塔旋转到鼠标指针的地步,但是当坦克主体旋转时,炮塔旋转没有考虑到它(它与坦克主体一起旋转)。有谁知道如何让它工作以便炮塔始终指向鼠标光标?
最好是纯 JS。
有点大,贴不出来,所以我就link到fiddle:
https://jsfiddle.net/9pom714a/
鼠标移动处理程序示例:
window.addEventListener('mousemove', (e) => {
mouseX = e.clientX - field.offsetLeft;
mouseY = e.clientY - field.offsetTop;
turretAngle = Math.atan2(mouseX - turretBaseX, -(mouseY - turretBaseY)) * (180/Math.PI);
turretBase.style.transform = 'rotate(' + turretAngle + 'deg)';
})
我知道代码很乱,我会在一切正常后重构它 ;)
像这样将 tankAngle 减去炮塔角度旋转:
window.addEventListener('mousemove', (e) => {
mouseX = e.clientX - field.offsetLeft;
mouseY = e.clientY - field.offsetTop;
turretAngle = Math.atan2(mouseX - turretBaseX, -(mouseY - turretBaseY)) * (180/Math.PI);
turretAngle -= tankAngle;
turretBase.style.transform = 'rotate(' + turretAngle + 'deg)';
})
已更新 fiddle:https://jsfiddle.net/9pom714a/1/