Я пытался использовать java.awt.Robot, как предлагает AerandiR, но столкнулся с парой проблем, и, возможно, с ними столкнутся и другие люди, поэтому я уточню.
Если ваша цель — удерживать курсор в одной позиции (предпочтительно в центре экрана), то вам нужно вызвать что-то вроде robot.mouseMove(width/2, height/2); в конце вашего метода mouseMoved(). В этой реализации каждый раз, когда мышь перемещается от центра, Robot будет перемещать ее обратно в центр.
Однако, когда Robot повторно отцентрирует мышь, игрок вернется туда, где он был. По сути, игрок будет заикаться между исходной позицией и повернутой позицией.
Чтобы исправить это, вместо того, чтобы определять, как далеко ваш игрок поворачивает разницу между тем, где сейчас находится мышь, и тем, где она была, определите ее как расстояние от центра.
Вот так: turnAmountX += e.getX() - width/2;
Теперь, если Robot повторно центрирует мышь, e.getX() - width/2 всегда будет давать ноль.
Резюме:
void mouseMoved(MouseEvent e) {
turnAmountX += e.getX() - width/2;
turnAmountY += e.getY() - height/2;
robot.mouseMove(this.getLocationOnScreen().x + width/2,
this.getLocationOnScreen().y + height/2;
}
person
Croolsby
schedule
13.08.2012