0% found this document useful (0 votes)
33 views

Codigo

This document defines a class called Principal that implements 3D graphics using OpenGL. It contains methods to initialize and draw different rooms of a 3D scene. The main() method creates a Principal object and runs it. The init() method sets up the OpenGL viewport and projection. The display() method clears the screen and draws the rooms by calling drawRoom(), drawSecondRoom(), and drawThirdRoom(). These drawing methods use textures loaded from image files to texture quad surfaces and render the floors, walls and other geometry for each room.

Uploaded by

Arturo Vedia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

Codigo

This document defines a class called Principal that implements 3D graphics using OpenGL. It contains methods to initialize and draw different rooms of a 3D scene. The main() method creates a Principal object and runs it. The init() method sets up the OpenGL viewport and projection. The display() method clears the screen and draws the rooms by calling drawRoom(), drawSecondRoom(), and drawThirdRoom(). These drawing methods use textures loaded from image files to texture quad surfaces and render the floors, walls and other geometry for each room.

Uploaded by

Arturo Vedia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

import java.awt.event.

KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

import com.jogamp.opengl.GL;
import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.FPSAnimator;
import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureIO;
import java.io.File;
import java.io.IOException;

public class Principal extends JFrame implements GLEventListener, KeyListener,


MouseMotionListener {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private static final float MOVE_SPEED = 0.1f;
private static final float MOUSE_SENSITIVITY = 0.1f;

private float cameraX;


private float cameraY;
private float cameraZ;
private float cameraYaw;
private int prevMouseX;
private int prevMouseY;
private float cameraPitch;
private float maxPitch;
private boolean forwardPressed;
private boolean backwardPressed;
private boolean leftPressed;
private boolean rightPressed;

public static void main(String[] args) {


Principal room = new Principal();
room.run();
}

public Principal() {
super("Facultad");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(this);
canvas.addKeyListener(this);
canvas.addMouseMotionListener(this);
getContentPane().add(canvas);
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

FPSAnimator animator = new FPSAnimator(canvas, 60);


animator.start();
}

private void run() {


cameraX = 0.0f;
cameraY = 0.0f;
cameraZ = 0.0f;
cameraYaw = 0.0f;
prevMouseX = 0;
cameraPitch = 0.0f;
maxPitch = 90.0f;

@Override
public void init(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glEnable(GL.GL_DEPTH_TEST);

gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 100.0);

gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
}

@Override
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();

gl.glTranslatef(0.0f, 0.0f, -10.0f);

gl.glRotatef(cameraYaw, 0.0f, 1.0f, 0.0f);


gl.glTranslatef(-cameraX, -cameraY, -cameraZ);

updateCameraPosition(); // Actualizar la posición de la cámara

drawRoom(gl);
drawSecondRoom(gl);
drawThirdRoom(gl);
}

private void drawRoom(GL2 gl) {

Texture texture;
try {

texture = TextureIO.newTexture(new File("images/piso1.jpg"), true);


} catch (IOException e) {
e.printStackTrace();
return;
}

gl.glEnable(GL2.GL_TEXTURE_2D);
gl.glTexEnvf(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE, GL2.GL_MODULATE);
texture.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glEnd();

gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture1;
try {
texture1 = TextureIO.newTexture(new File("images/frontal1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared frontal
gl.glEnable(GL2.GL_TEXTURE_2D);
texture1.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

// Cargar la textura
Texture textureLeftFloor = null;
try {
textureLeftFloor = TextureIO.newTexture(new File("images/piso1.jpg"),
true);
} catch (IOException e) {
e.printStackTrace();
}

// Verificar si la textura se cargó correctamente


if (textureLeftFloor != null) {
// Habilitar el uso de texturas en OpenGL
gl.glEnable(GL2.GL_TEXTURE_2D);

// Vincular la textura antes de dibujar el piso izquierdo


textureLeftFloor.bind(gl);
// Dibujar el piso izquierdo con la textura
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-15.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, -5.0f);
gl.glEnd();

// Deshabilitar el uso de texturas después de dibujar


gl.glDisable(GL2.GL_TEXTURE_2D);
}

Texture texture2;
try {
texture2 = TextureIO.newTexture(new File("images/izqui1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared izquierda del piso


gl.glEnable(GL2.GL_TEXTURE_2D);
texture2.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-15.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-15.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-15.0f, 5.0f, -5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture3;
try {
texture3 = TextureIO.newTexture(new File("images/derecha1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared frontal del piso en la parte de atrás


gl.glEnable(GL2.GL_TEXTURE_2D);
texture3.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-15.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, -5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture4;
try {
texture4 = TextureIO.newTexture(new File("images/dere.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared derecha
gl.glEnable(GL2.GL_TEXTURE_2D);
texture4.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, -5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, -5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

private void drawSecondRoom(GL2 gl) {

Texture texture5;
try {
texture5 = TextureIO.newTexture(new File("images/piso1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Piso del segundo dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture5.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, -1.0f, 15.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, -1.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture6;
try {
texture6 = TextureIO.newTexture(new File("images/paredizquierda2.png"),
true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared izquierda del segundo dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture6.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 15.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture7;
try {
texture7 = TextureIO.newTexture(new File("images/paredderecha2.png"),
true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared derecha del segundo dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture7.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, 5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(5.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(5.0f, -1.0f, 15.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

private void drawThirdRoom(GL2 gl) {

Texture texture8;
try {
texture8 = TextureIO.newTexture(new File("images/piso1.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Piso del tercer dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture8.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 15.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-15.0f, -1.0f, 15.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-15.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture9;
try {
texture9 = TextureIO.newTexture(new File("images/pisos.png"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Piso adicional en la parte derecha del piso del tercer dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture9.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, 15.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-25.0f, -1.0f, 15.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-25.0f, -1.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture10;
try {
texture10 = TextureIO.newTexture(new File("images/venta.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared frontal izquierda del piso adicional


gl.glEnable(GL2.GL_TEXTURE_2D);
texture10.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, 15.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-15.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-25.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-25.0f, -1.0f, 15.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture11;
try {
texture11 = TextureIO.newTexture(new File("images/venta2.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared frontal derecha del piso adicional


gl.glEnable(GL2.GL_TEXTURE_2D);
texture11.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, 5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-15.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-25.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-25.0f, -1.0f, 5.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture12;
try {
texture12 = TextureIO.newTexture(new File("images/frontal5.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared derecha de la pared frontal derecha del piso adicional


gl.glEnable(GL2.GL_TEXTURE_2D);
texture12.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-25.0f, -1.0f, 5.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-25.0f, 5.0f, 5.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-25.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-25.0f, -1.0f, 15.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

Texture texture13;
try {
texture13 = TextureIO.newTexture(new File("images/froniz.jpg"), true);
} catch (IOException e) {
e.printStackTrace();
return;
}

// Pared frontal del tercer dormitorio


gl.glEnable(GL2.GL_TEXTURE_2D);
texture13.bind(gl);
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-5.0f, -1.0f, 15.0f);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-5.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(-15.0f, 5.0f, 15.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(-15.0f, -1.0f, 15.0f);
gl.glEnd();
gl.glDisable(GL2.GL_TEXTURE_2D);

@Override
public void keyTyped(KeyEvent e) {
// Implementa el código necesario aquí
}

@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int
height) {
GL2 gl = drawable.getGL().getGL2();
gl.glViewport(0, 0, width, height);
}

@Override
public void dispose(GLAutoDrawable drawable) {

private void updateCameraPosition() {


float moveSpeed = MOVE_SPEED;

if (forwardPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw));
}
if (backwardPressed) {
cameraX -= moveSpeed * Math.sin(Math.toRadians(cameraYaw));
cameraZ += moveSpeed * Math.cos(Math.toRadians(cameraYaw));
}
if (leftPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw - 90));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw - 90));
}
if (rightPressed) {
cameraX += moveSpeed * Math.sin(Math.toRadians(cameraYaw + 90));
cameraZ -= moveSpeed * Math.cos(Math.toRadians(cameraYaw + 90));
}
}

@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();

if (key == KeyEvent.VK_W) {
forwardPressed = true;
} else if (key == KeyEvent.VK_S) {
backwardPressed = true;
} else if (key == KeyEvent.VK_A) {
leftPressed = true;
} else if (key == KeyEvent.VK_D) {
rightPressed = true;
}
}

@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();

if (key == KeyEvent.VK_W) {
forwardPressed = false;
} else if (key == KeyEvent.VK_S) {
backwardPressed = false;
} else if (key == KeyEvent.VK_A) {
leftPressed = false;
} else if (key == KeyEvent.VK_D) {
rightPressed = false;
}
}

// @Override
// public void keyPressed(KeyEvent e) {
// int keyCode = e.getKeyCode();
// switch (keyCode) {
// case KeyEvent.VK_S:
// forwardPressed = true;
// break;
// case KeyEvent.VK_W:
// backwardPressed = true;
// break;
// case KeyEvent.VK_A:
// leftPressed = true;
// break;
// case KeyEvent.VK_D:
// rightPressed = true;
// break;
// }
// }

// @Override
// public void keyTyped(KeyEvent e) {
//
// }

// @Override
// public void keyReleased(KeyEvent e) {
// int keyCode = e.getKeyCode();
// switch (keyCode) {
// case KeyEvent.VK_S:
// forwardPressed = false;
// break;
// case KeyEvent.VK_W:
// backwardPressed = false;
// break;
// case KeyEvent.VK_A:
// leftPressed = false;
// break;
// case KeyEvent.VK_D:
// rightPressed = false;
// break;
// }
// }
// private void updateCameraPosition() {
// if (forwardPressed) {
// moveForward();
// }
// if (backwardPressed) {
// moveBackward();
// }
// if (leftPressed) {
// strafeLeft();
// }
// if (rightPressed) {
// strafeRight();
// }
// }

@Override
public void mouseDragged(MouseEvent e) {
int mouseX = e.getX();
int mouseY = e.getY();

int deltaX = mouseX - prevMouseX;


int deltaY = mouseY - prevMouseY;

cameraYaw += deltaX * MOUSE_SENSITIVITY;


cameraPitch += deltaY * MOUSE_SENSITIVITY;

// Limitar el ángulo de pitch dentro del rango permitido


if (cameraPitch > maxPitch) {
cameraPitch = maxPitch;
} else if (cameraPitch < -maxPitch) {
cameraPitch = -maxPitch;
}

prevMouseX = mouseX;
prevMouseY = mouseY;
}

@Override
public void mouseMoved(MouseEvent e) {
prevMouseX = e.getX();
prevMouseY = e.getY();
}

private void moveForward() {


cameraX -= MOVE_SPEED * Math.sin(Math.toRadians(cameraYaw));
cameraZ += MOVE_SPEED * Math.cos(Math.toRadians(cameraYaw));
}

private void moveBackward() {


cameraX += MOVE_SPEED * Math.sin(Math.toRadians(cameraYaw));
cameraZ -= MOVE_SPEED * Math.cos(Math.toRadians(cameraYaw));
}

private void strafeLeft() {


cameraX -= MOVE_SPEED * Math.cos(Math.toRadians(cameraYaw));
cameraZ -= MOVE_SPEED * Math.sin(Math.toRadians(cameraYaw));
}

private void strafeRight() {


cameraX += MOVE_SPEED * Math.cos(Math.toRadians(cameraYaw));
cameraZ += MOVE_SPEED * Math.sin(Math.toRadians(cameraYaw));
}
}

You might also like