Hacer un motor 3D básico en Java (4 / 5 paso)

Paso 4: Cálculo de la pantalla

La clase de pantalla es que la mayoría de los cálculos se realiza para conseguir el programa de trabajo. Para trabajar, la clase tiene las siguientes importaciones:

La clase real comienza así:

El mapa es el mismo mapa creado en la clase del juego. La pantalla utiliza esto para averiguar dónde están las paredes y la distancia el jugador son. Width y height definen el tamaño de la pantalla y siempre deben ser el mismo como el ancho y alto del marco creado en la clase de juego. Texturas es una lista de todas las texturas para que la pantalla puede acceder a los píxeles de las texturas. Después de que las variables se declaran tienen que inicializarse en el constructor como sigue:

Ahora su tiempo a escribir un método de la clase tiene: un método de actualización. El método update Actualiza cómo debe ver la pantalla al usuario en función de su posición en el mapa. El método se llama constantemente y devuelve la matriz actualizada de píxeles a la clase de juego. El método comienza por "limpiar" la pantalla. Esto logra estableciendo todos los pixels en la parte superior la mitad de un color y todos los pixels en la parte inferior a otro.

La parte superior e inferior de la pantalla ser dos diferentes colores también hace parecer que hay un piso y un techo. Después el píxel matriz se borra entonces es el momento de pasar a los cálculos principales. El programa recorre cada barra vertical en la pantalla y lanza un rayo a averiguar qué pared debe estar en la pantalla en la que la barra vertical. El principio del bucle se ve así:

Todo lo que sucede aquí es algunas de las variables que se utilizará por el resto del bucle se calcula. CameraX es la coordenada x de la actual franja vertical en el plano de la cámara, y las variables de rayDir hacen un vector para el rayo. Todas las variables en DistX o DistY son calculados para que el programa sólo comprueba las colisiones en los lugares donde posiblemente podrían ocurrir colisiones. perpWallDist es que la distancia entre el jugador y la primera muralla el rayo choca con. Esto se calcularán más adelante. Después de que tenemos que averiguar algunas de las otras variables basadas en el ya calculamos.

Una vez que se hace es tiempo para averiguar donde el rayo choca con una pared. Para ello el programa pasa a través de un bucle donde comprueba si el rayo ha llegado en contacto con una pared, y si no se mueve a la posible colisión siguiente punto antes de comprobar una vez más.

Ahora que sabemos que donde el rayo golpea una pared podemos empezar a averiguar cómo debe buscar la pared en la banda vertical son actualmente encendido. Para ello primero calcular la distancia a la pared y luego usar esa distancia para averiguar cuánto mide la pared debe aparecer en la franja vertical. Entonces traducir eso altura de inicio y final en cuanto a los píxeles en la pantalla. El código tiene este aspecto:

Después de que se calcula es momento de comenzar a averiguar qué píxeles de la textura de la pared realmente aparecerá para el usuario. Para esto nosotros primero debemos averiguar qué textura se asocia con la pared que acaba de salir y luego calcular la coordenada x de la textura de los píxeles que se mostrará al usuario.

La coordenada x se calcula tomando la posición exacta de donde la pared fue golpeada en el mapa 2D y restando el valor entero, dejando sólo los decimales. Este decimal (wallX) entonces se multiplica por el tamaño de la textura de la pared para obtener la abscisa exacta en la pared de los píxeles que queremos dibujar. Una vez que sabemos que lo único que dejó hacer es calcular las coordenadas y de los píxeles de la textura y dibujar en la pantalla. Para ello que recorrer todos los píxeles en la pantalla en la tira vertical estamos haciendo cálculos y calcular el la coordenada exacta del pixel de la textura. Usar esto el programa y luego escribe los datos del píxel de la textura en la matriz de píxeles en la pantalla. El programa también hace paredes horizontales más oscuras que las paredes aquí para dar un efecto de iluminación básica.

Después de eso, todo lo que queda en la clase de pantalla es devolver la matriz de píxeles

Y se hace en la clase. Ahora todo lo que tenemos que hacer es añadir unas pocas líneas de código en la clase del juego para conseguir la pantalla de trabajo. Con las variables en la parte superior agregue esto:

Y en el constructor agregue que esto en algún lugar después de texturas se ha inicializado.

Y por último, en el método de ejecución

justo antes de camera.update(map). Y el programa se hace!

Artículos Relacionados

Cómo hacer un Motor

Cómo hacer un Motor

Hola a todos!!!! Hoy voy a mostrarte cómo hacer un motor. Bueno lo primero que piensa es que, es inútil porque no puede ejecutar su coche rc con este motor. Pero eso no es punto de esta compilación, de hecho es el punto principal de la construcción p
Hacer un servidor privado básico en Minecraft

Hacer un servidor privado básico en Minecraft

¿Quieres una manera fácil de jugar a Minecraft con tus amigos sin todos los trolls y gente molesta en servidores públicos? Aquí es la forma más fácil de hacer que un servidor básico protegido por contraseña! Esto se hace en un mac. Creo que es simila
Hacer un motor de jet del pulso, (escaneado de planos 1958)

Hacer un motor de jet del pulso, (escaneado de planos 1958)

hacer un motor de Jet de pulsoAlimenta una escala modelo MiG 15 de combate a 85 millas por hora. Se trata de un potente chorro y que se puede hacer por cualquier persona con acceso a instalaciones de soldadura y torno.Emil Brauner de Kladno en Czecho
Cómo hacer agua motor

Cómo hacer agua motor

Cómo hacer agua motorfácilmente se puede hacer en casavideos
Hacer un motor muy fácilmente

Hacer un motor muy fácilmente

Hoy voy a mostrar cómo hacer un motor muy fácilmente. Para esto puede que no necesite más de las cosas ordinarias. Es fácil y gran para las clases científicas y experimentos.Visita mi perfil: para ver más de este tipo de proyectos interesantes.Paso 1
Cómo hacer un MOTOR del aire de pajas | TUTORIAL || DIY ||| EXPERIMENT||

Cómo hacer un MOTOR del aire de pajas | TUTORIAL || DIY ||| EXPERIMENT||

https://www.youtube.com/watch?v=61X6Jz2fjmE&feature=youtu.bePaso 1: Hacer un MOTOR del aire de paja necesita!!!!!! En el vídeo de hoy, les mostraré una divertida idea para los niños sobre cómo hacer un motor de aire (mini motor, hélice, etc.) en gene
Cómo hacer un motor de cohete

Cómo hacer un motor de cohete

Me gustaría prefacio este Instructable con algunas breves observaciones acerca de la seguridad. Mientras que estos materiales son relativamente seguros por sí mismos, cuando se ponen juntos forman un compuesto muy peligroso. Extrema precaución debe t
Cómo hacer un motor de cohete de papel

Cómo hacer un motor de cohete de papel

Hola, hoy voy a aprender a hacer un motor de cohete de papel fuera de una pieza cuadrada de papel.video sobre cómo hacerlo y utilizarlo aquíVerlo en acción (no es mi video) aquíPaso 1: Paso 1(prefolding) Haz un pedazo cuadrado de papel y doblarla esq
Cómo hacer un motor eléctrico de masco G19

Cómo hacer un motor eléctrico de masco G19

Este Instructable le mostrará cómo hacer un motor eléctrico de algunos materiales comunes.Paso 1: materiales Para hacer este motor eléctrico simple que vas a tener que reunir los siguientes materiales.Dos clipsUna pila de dUn imán preferentemente la
Una manera Simple de hacer un Motor Masco G 33

Una manera Simple de hacer un Motor Masco G 33

Título: Una Simple manera de hacer un Motor Masco G 33Introducción...En esta actividad, usted estará creando Energía mecánica que es la energía por el movimiento y la posición de ciertos objetos. Teniendo los dos clips de papel en el más y menos en l
Cómo hacer nudos de pesca básico 3 que deberían funcionar para la mayoría de las aplicaciones

Cómo hacer nudos de pesca básico 3 que deberían funcionar para la mayoría de las aplicaciones

en este video te enseño cómo hacer nudos de pesca básico 3 que utilizo para mis nudos primarios mientras pesca.Es muy fáciles y puede ser todo que usted necesita.  
Cómo hacer un motor de mini KVG

Cómo hacer un motor de mini KVG

Hola guyz -¿Los motores son fabulosos y te knexers los amantes del motor, eh? Pero, lo que yo y algunos de ustedes por supuesto no como las cargas de trabajo y las cargas de piezas que necesita. :-P así que esto es un motor que (1) no necesita mucho
Cómo hacer un Motor Simple

Cómo hacer un Motor Simple

aquí es una divertida manera de explorar el funcionamiento interno de un motor simple.  Este es un gran proyecto para el uso en el aula o en casa.  Hacer su propio Motor, es una excelente introducción al mundo de la tecnología.Paso 1: Materiales y he
Hacer este Motor electrostático de desecho

Hacer este Motor electrostático de desecho

IntroAquí es un electrostático que motor' s fácilmente construido para un proyecto de Ciencias. El rotor fue construido por laminar una tira de papel de aluminio entre capas de cinta de embalaje plástico y rodando en un tubo. El tubo fue montado en u