Можно ли в JS как-нибудь установить чувствительность мыши?
Пишу небольшую игру на чистом JS. Стоит задача установить скорость мыши (сенсу/чувствительность/dpi) и возможность для настройки пользователем. Хотелось узнать, можно ли как-нибудь это осуществить и если можно, то каким способом (можно использовать библиотеки и прочее). Нужно этот для того, чтобы при тренировке скорости наводки по целям на сайте, чувствительность мыши совпадала с той, которая в игре у пользователя. Буду рад любой информации.
Ответы (1 шт):
Автор решения: ᅠhᅠ
→ Ссылка
Как сделать скорость курсора ниже стандартной я не придумал...курсор будет просто выходить за экран и прицел никогда не достигнет краев.
Стрелочками вправо/влево меняется скорость.
const canvas = document.getElementById('canvas')
const context = canvas.getContext('2d')
let width = canvas.width = innerWidth
let height = canvas.height = innerHeight
let cx = width / 2
let cy = height / 2
const aim = { x: cx, y: cy }
const mouse = { x: cx, y: cy }
let speed = 1
render()
function drawRect(x, y, color) {
context.fillStyle = color
context.fillRect(x, y)
}
function drawAim(x, y) {
context.beginPath()
context.arc(x, y, 20, 0, Math.PI * 2)
context.stroke()
context.beginPath()
context.moveTo(x - 30, y)
context.lineTo(x + 30, y)
context.stroke()
context.beginPath()
context.moveTo(x, y - 30)
context.lineTo(x, y + 30)
context.stroke()
}
function render() {
context.clearRect(0, 0, width, height)
aim.x = cx + mouse.x
aim.y = cy + mouse.y
drawAim(aim.x, aim.y)
requestAnimationFrame(render)
}
onkeydown = e => {
if (e.key === 'ArrowRight') speed += 0.1
if (e.key === 'ArrowLeft') speed = Math.max(1, speed - 0.1)
speed = +speed.toFixed(2)
output.innerText = 'speed: ' + speed
}
onmousemove = e => {
mouse.x = (e.x - cx) * speed
mouse.y = (e.y - cy) * speed
}
onresize = () => {
width = canvas.width = innerWidth
height = canvas.height = innerHeight
cx = width / 2; cy = height / 2
}
body {
margin: 0;
cursor: none;
}
canvas {
display: block;
}
div {
position: absolute;
top: 10vh;
left: 10vw;
font-size: calc(10px + 2vh + 2vw);
}
<div id=output>speed: 1</div>
<canvas id=canvas></canvas>