gpt4 book ai didi

java - 为什么我的角色无法移动?

转载 作者:行者123 更新时间:2023-12-01 11:59:20 25 4
gpt4 key购买 nike

我正在尝试制作一款角色可以向上(而不是跳跃)、向左、向右和向下移动的游戏。我对 lwjgl 非常陌生,所以如果您发现任何其他错误,或者您有任何提示要给我,请不要犹豫。

我的代码:

public class Player {

public float x, y, xspeed, yspeed, delta;
public long lastFrame;

public Player(){

x=350;
y=250;
xspeed=1;
}

public void drawPlayer(Texture tex, float x, float y, float width, float height) {
this.x=x;
this.y=y;
tex.bind();

glPushMatrix();

glTranslatef(x,y,0);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(0,0);
glTexCoord2f(1,0);
glVertex2f(width,0);
glTexCoord2f(1,1);
glVertex2f(width,height);
glTexCoord2f(0,1);
glVertex2f(0,height);
glEnd();
glLoadIdentity();
}

public void playerMovement(){


while(Keyboard.next()){

float delta= getDelta();

if(Keyboard.isKeyDown(Keyboard.KEY_D))
xspeed = Math.max(-5, xspeed-1);
xspeed*=0.9;


if (Keyboard.getEventKey()==Keyboard.KEY_W && Keyboard.getEventKeyState())
x++;
xspeed=Math.min(5, xspeed+1);

if (Keyboard.getEventKey()==Keyboard.KEY_A && Keyboard.getEventKeyState())
x++;
xspeed=Math.min(5, xspeed+1);

if (Keyboard.getEventKey()==Keyboard.KEY_S && Keyboard.getEventKeyState())
x++;
xspeed=Math.min(5, xspeed+1);
}
}

public float getDelta(){

long currentTime= getTime();
float delta=(float)(currentTime - lastFrame);
lastFrame=getTime();

return delta;
}

public long getTime(){

return (Sys.getTime() *1000 ) / Sys.getTimerResolution();

}

public void update(int xspeed, int yspeed ){

x+=xspeed;
y+=yspeed;

}
}

最佳答案

我想说玩家移动中的 if 语句没有意义。

   if(Keyboard.isKeyDown(Keyboard.KEY_D))
xspeed = Math.max(-5, xspeed-1);
xspeed*=0.9;

这里,只有第一个赋值依赖于 KEY_D,而不是乘法。因此,最后一个 if 之后的最后一个 xspeed 分配始终“获胜”。

   if(Keyboard.isKeyDown(Keyboard.KEY_D)) {
xspeed = Math.max(-5, xspeed-1);
xspeed*=0.9;
}

以下 if 语句也是如此。

关于java - 为什么我的角色无法移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28103807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com