Можно ли в 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>

→ Ссылка