我是LWJGL的新手,但我正在慢慢学习。当你按下键时,我想制作一个旋转的方块。就像你在下面说的那样将d旋转90度,但是当我使用glRotatef()时;它给了我一个错误,我不知道为什么。有错误告诉我我需要为它创建一个方法,我知道我不需要。一切都有帮助!
public class MainPlayer {
private Draw draw;
private int rotation;
private float WIDTH = (float) (Display.getWidth() * 0.1);
private float HEIGHT = (float) (WIDTH / 2);
private float x = Display.getWidth() / 2 - WIDTH / 2;
private float y = Display.getHeight() / 2 - HEIGHT / 2;
public MainPlayer(){
draw = new Draw(1.0f, 1.0f, 1.0f, WIDTH, HEIGHT);
}
public void update(){
}
public void render(){
glTranslatef(x, y, 0);
glRotatef(rotation,0,0,1);
draw.render();
}
public void getInput(){
if(Keyboard.isKeyDown(Keyboard.KEY_W)){
rotation = 0;
}
if(Keyboard.isKeyDown(Keyboard.KEY_S)){
rotation = 180;
}
if(Keyboard.isKeyDown(Keyboard.KEY_A)){
rotation = 270;
}
if(Keyboard.isKeyDown(Keyboard.KEY_D)){
rotation = 90;
}
}
}
答案 0 :(得分:0)
您创建了int rotation
并假设您的render()
一直循环,并且您只在<{1}}中设置 rotation
。
所以我假设您应该将其声明为getInput()
。
答案 1 :(得分:0)
这可能意味着您没有静态导入glRotatef
使用
GL11.glRotatef(rotation, 0, 0, 1);
或使用
在程序开头导入它import static org.lwjgl.opengl.GL11.glRotatef
答案 2 :(得分:0)
glRotatef()是一个旋转对象的OpenGL调用,就像glTranslatef()移动它们一样。 glRotatef()以同样的方式完成它。
glRotatef(AngleOfRotationf,0,1,0)会以水平方式旋转它,就像我刚制作的视频一样:http://www.youtube.com/watch?v=SHsssrj9qr8&使用该线来旋转船只。
同样在那段视频中,我演示了用glTranslatef()移动它。
要使用它,您必须使用GL11.glRotatef(),或导入静态org.lwjgl.opengl.GL11。*;