gpt4 book ai didi

java - 物体不旋转

转载 作者:行者123 更新时间:2023-12-02 06:35:35 24 4
gpt4 key购买 nike

我有一个矩形,这将是我的移动对象的基础。

我仅在按下 A 按钮时尝试旋转对象,释放按钮时对象应停止旋转。

package Tanc;

导入org.lwjgl.input.Keyboard;

导入 org.lwjgl.input.Mouse;

导入 org.lwjgl.opengl.Display;
导入 org.lwjgl.opengl.DisplayMode;

导入org.lwjgl.opengl.GL11;

导入org.lwjgl.LWJGLException;

公共(public)类 Tanc{

public Tanc(){
try{
Display.setDisplayMode(new DisplayMode(640,480));
Display.setTitle("Tanc");
Display.create();
}catch(LWJGLException e){
e.printStackTrace();
}
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glOrtho(1, 1, 1, 1, 1, -1);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glMatrixMode(GL11.GL_PROJECTION);
float y_angle = 0;
boolean aFlag = false;
while(!Display.isCloseRequested()){
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
// GL11.glPushMatrix();
GL11.glLoadIdentity();
GL11.glRectd(0, 0, 0.2f, 0.3f);
GL11.glTranslatef(0, 0, 0);

while(Keyboard.next()){
if(Keyboard.getEventKey() == Keyboard.KEY_A){
aFlag = true;
}
}
if(aFlag){
y_angle = 0.1f;
GL11.glRotatef(y_angle, 0, 0, 1);
}
else{
y_angle = 0;
GL11.glRotatef(0, 0, 0, 1);
}




// GL11.glPopMatrix();
Display.update();
Display.sync(60);
}
Display.destroy();
System.exit(0);
}

public static void main(String[] args){
new Tanc();
}

}

最佳答案

那是因为你从来没有真正旋转过任何东西。除了从 0.0 到 0.1 之外,y_angle 并没有真正改变。

请记住,glRotatef() 所采用的角度参数需要以为单位,而不是弧度。以弧度表示的完整圆从 0.0 到 ~6.2831 弧度。使用度数的完整圆从 0.0 度到 360.0 度。所以你的角度根本不明显,因为你只改变了这么小的角度。

我已经更改了您的代码。当您现在按住 A 按钮时,它将旋转,当您松开按钮时,它将停止旋转。

float y_angle = 0;

while (!Display.isCloseRequested()) {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
GL11.glLoadIdentity();
GL11.glRectd(0, 0, 0.2f, 0.3f);
GL11.glTranslatef(0, 0, 0);

while (Keyboard.next()){
if (Keyboard.getEventKey() == Keyboard.KEY_A) {
y_angle += 10f;
}
}

GL11.glRotatef(y_angle, 0, 0, 1);

Display.update();
Display.sync(60);
}

关于java - 物体不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686736/

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