簡単に説明すると、クラス Cube を呼び出してプレイヤーを描画するクラスがあり、コンストラクターでそれぞれ異なる変数が定義された頭、体、2 本の腕、2 本の脚を作成します。しかし、head.r = 1.0f を呼び出しても色はまったく変わりません。これは、キューブ メソッドがマトリックスをプッシュおよびポップするためでしょうか?
Player クラスの先頭部分
head = new Cube(0.0f, 1.0f, 1.0f, h_x, h_y, h_z, 0.0f, 0.0f, 0.0f, 0.0f, h_length, h_height, h_width);
head.cube(drawable);
head.r = 1.0f;
キューブ法
public void cube(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glPushMatrix();
gl.glColor3f(r, g, b);
gl.glTranslatef(x, y, z);
gl.glRotatef(angle, pitch, yaw, roll);
gl.glScalef(length, height, width);
gl.glBegin(GL_QUADS);
//front
gl.glVertex3f(c, c, c);
gl.glVertex3f(c, -c, c);
gl.glVertex3f(-c, -c, c);
gl.glVertex3f(-c, c, c);
//back
gl.glVertex3f(c, c, -c);
gl.glVertex3f(c, -c, -c);
gl.glVertex3f(-c, -c, -c);
gl.glVertex3f(-c, c, -c);
//top
gl.glVertex3f(c, c, c);
gl.glVertex3f(c, c, -c);
gl.glVertex3f(-c, c, -c);
gl.glVertex3f(-c, c, c);
//bottom
gl.glVertex3f(c, -c, c);
gl.glVertex3f(c, -c, -c);
gl.glVertex3f(-c, -c, -c);
gl.glVertex3f(-c, -c, c);
//left
gl.glVertex3f(-c, c, c);
gl.glVertex3f(-c, -c, c);
gl.glVertex3f(-c, -c, -c);
gl.glVertex3f(-c, c, -c);
//right
gl.glVertex3f(c, c, c);
gl.glVertex3f(c, -c, c);
gl.glVertex3f(c, -c, -c);
gl.glVertex3f(c, c, -c);
gl.glEnd();
gl.glPopMatrix();
}
PS 混乱を避けるために、クラスは Cube、メソッドは Cube です。
編集:プッシュとポップをコメントアウトしてみましたが、すべてが台無しになりましたが、頭の色はまだ変わりません.