基于鼠标位置的移动 - 不必要的偏移

时间:2014-04-03 19:40:28

标签: java

我正在制作Pong游戏,我无法让玩家和AI拨片正确移动。这种解释可能有点混乱。

首先,球员的球拍。我会为AI提出一个单独的问题,以保持这篇文章的长度。

HEIGHTWIDTH定义了paddle大小,image是paddle的纹理

double mouseY = MouseInfo.getPointerInfo().getLocation().getY();
        if (mouseY < getHeight() - HEIGHT) {
            paddleLeft.setLocation(2 * WIDTH, mouseY);
            image.setLocation(2 * WIDTH, mouseY);
            image.sendToFront();
        } else {     

                   // stop paddle from sliding off screen

            paddleLeft.setLocation(2 * WIDTH, getHeight() - HEIGHT);
            image.setLocation(2 * WIDTH, getHeight() - HEIGHT);
            image.sendToFront();

球员的球拍由鼠标控制。现在,当我将光标移动到屏幕顶部时,我的拨片(顶部边框)触及窗口的顶部。这可以被认为是正确的,但我不喜欢它。如果我将窗口移动到屏幕中央,我需要将鼠标移离屏幕才能转向。它的工作方式如下:mouse controll range

我希望桨的顶部边框与光标Y坐标平行。我尝试使用不同的代码来获得鼠标位置:

addMouseListeners();

public void mouseMoved(MouseEvent e) {
     mouseY=e.getYOnScreen();
}

但是我的光标仍然没有与桨对齐,我只能在屏幕截图2所示的范围内移动我的桨:(光标位于顶部窗口边框)

paddle range

1 个答案:

答案 0 :(得分:1)

从屏幕鼠标坐标中减去帧的X和Y屏幕位置以获得帧中的偏移量,或者向帧本身添加适当的MouseListener,这将在窗口客户端坐标中提供鼠标位置。

无论如何,侦听器方法通常都更好,因为这意味着您还可以在不影响鼠标代码的情况下将其他组件添加到窗口中;它使游戏框架中的所有东西都自成一体。

相关问题