Я пытаюсь сделать небольшой шутер, вопрос в том, как сделать так, чтобы вращение героя зависело от вращения мыши, и когда я нажал, чтобы пойти, он уже шел на этот тротуар.
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);