Я хочу, чтобы игрок вращался от курсора мыши - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь сделать небольшой шутер, вопрос в том, как сделать так, чтобы вращение героя зависело от вращения мыши, и когда я нажал, чтобы пойти, он уже шел на этот тротуар.

    public GameMenu(JFrame frame) {
        try {
            bufferedImage = ImageIO.read(new File("qwe.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Image dimg = bufferedImage.getScaledInstance(BLOCK_WEIGHT, BLOCK_HIEGHT, Image.SCALE_SMOOTH);
        imageIcon = new ImageIcon(dimg);
        frame.remove(MainMenuDT.card1);
        frame.setSize(WEIGHT_MAP, HIEGHT_MAP);
        frame.setLocationRelativeTo(null);

        canvas.setBackground(Color.BLACK);
        frame.add(canvas);

        frame.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (!gameOver) {           
                    if (e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_RIGHT) {

                        myPerson.move(e.getKeyCode());
                    }

                }
            }
        });
        frame.addMouseMotionListener(new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {}

            @Override
            public void mouseMoved(MouseEvent e) {
                mousePosY = e.getY();
                mousePosX = e.getX();
                canvas.repaint();
            }
        });

    }
 }

Вот реализация движения

class MyPerson {
    boolean livePerson(){
        return true;
    }
    void move(int loc) {
        if (loc == KeyEvent.VK_RIGHT){
            heroPosX += 3;
        }else if( loc == KeyEvent.VK_LEFT){
            heroPosX -= 3;
        }
        canvas.repaint();
    }

}

class Canvas extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fill3DRect(mousePosX, mousePosY, 10, 10, true);
        g.drawImage(imageIcon.getImage(), heroPosX, heroPosY, null);
    }
}

Будет прицел, но необходимо, чтобы он находился на определенном расстоянии от героя.

g.fill3DRect(mousePosX, mousePosY, 10, 10, true);
...