我知道图像不断绘制,但 x/y 坐标没有变化,这不会让图像移动。为什么会发生这种情况以及我可以采取什么措施来修复它
import java.awt.*;
public class GameState extends State {
private Player player;
private int playerX = 1440/2 - 14, playerY = 810/2 - 14;
public GameState(SuperHexagonGame game)
{
super(game);
player = new Player(playerX, playerY);
}
public void tick()
{
player.tick();
}
public Player getPlayer()
{
return player;
}
public void render(Graphics g)
{
g.drawImage(Assets.bg1, 0, 0, null);
player.render(g);
}
}
玩家等级
import java.awt.*;
public class Player extends Creature {
public Player(int x, int y)
{
super(x, y);
}
public void tick()
{
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void setX(int x)
{
this.x = x;
}
public void setY(int y)
{
this.y = y;
}
public void render(Graphics g)
{
System.out.println(y);
g.drawImage(Assets.player1, x, y, null);
}
}
检查按键输入的按键输入类。我试图通过获取当前的 xy 值并加/减 75 来设置玩家类中的 xy 值
import java.awt.event.*;
public class KeyInput extends KeyAdapter {
private Player player = new Player(1440 / 2 - 14, 810/2 - 14);
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
System.out.println(key);
if (key == KeyEvent.VK_UP)
{
//decrement y by 75
player.setY(player.getY() - 75);
}
if (key == KeyEvent.VK_DOWN)
{
//increment y by 75
}
if (key == KeyEvent.VK_LEFT)
{
//decrement x by 75
}
if (key == KeyEvent.VK_RIGHT)
{
//increment x by 75
}
}
}
我知道程序正在获取键盘输入(箭头键),因为当按下某个键时,它会将键码显示到控制台中,但它不会将 xy 值设置为新的 xy 值以进行移动。我只为向上箭头键完成了代码,因为我想确保它在复制粘贴之前有效。
最佳答案
您这里有 2 个玩家
。 Player player = new Player(1440/2 - 14, 810/2 - 14);
和player = new Player(playerX, playerY);
。
我想说,您正在编辑一名球员并打印另一名球员。尝试添加以下内容:
public class KeyInput extends KeyAdapter {
private Player player;
public KeyInput (Player player){
this.player = player;
}
}
关于java - 我试图通过获取和设置 x/y 值来使关键输入起作用,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288129/