我在我的2D游戏中实现了一些寻路,但我不知道如何移动我的'Zombie'角色。 我正在使用slick2d,并且所有内容都会在render方法中放到屏幕上,但是我想在Zombie类中更新僵尸运动。 这是僵尸类中的方法:
public void findPrey(){
Pathfinder pf = new Pathfinder();
pf.setStartNode(xPosition,yPosition);
for(PathCoordinates p: pf.calculatePath()){
if(p.getXPosition() > xPosition){
moveRight(2);
}if(p.getXPosition() < xPosition){
moveLeft(2);
}if(p.getYPosition() > yPosition){
moveUp(2);
}if(p.getYPosition() < yPosition){
moveDown(2);
}
}
}
所以我想循环遍历x和y坐标列表并移动僵尸。 然而,没有事情发生 - 僵尸根本不动。
在我的'world'类中,我有渲染方法,它循环僵尸并渲染它们,代码已被略微编辑:
public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
throws SlickException {
for (Zombie z : zombies) {
if (!z.isDead()) {
z.render(gc, sbg, g);
z.findPrey();
}
}
}
所以,基本上我的问题是 - 如何让我的僵尸角色移动?!感谢您提供任何帮助或指导
答案 0 :(得分:0)
你应该首先移动僵尸,然后再渲染它。
还有一个问题:您允许使用一个findPrey()
(在下面的代码中使用updatePosition()
)方法调用来移动僵尸。
Zombie class:
public void updatePosition() {
Pathfinder pf = new Pathfinder();
pf.setStartNode(xPosition,yPosition);
PathCoordinates p = pf.calculatePath()[0];
if(p.getXPosition() > xPosition) {
moveRight(2);
} if(p.getXPosition() < xPosition) {
moveLeft(2);
} if(p.getYPosition() > yPosition) {
moveUp(2);
} if(p.getYPosition() < yPosition) {
moveDown(2);
}
}
世界级:
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
for(Zombie z : zombies) {
if(!(z.isDead())) {
z.updatePosition();
z.render(gc, sbg, g);
}
}
}