Funciones esenciales para crear un juego.

2
13213

Funciones esenciales para crear un juego.

En tutoriales anteriores se ha mostrado como podíamos crear un
juego a partir de uno existente, en este tutorial intentaremos
facilitaros las cosas, para ello os enseñaremos algunas funciones de
utilidad (crear escenarios propios, cargar personaje propio y como dotarle
de movimiento, etc.).

Empezaremos por crear el espacio donde se producirán todas las
acciones del juego, para ello nos podemos crear una clase que sea derivada
de Skybox, en ella tendremos el constructor que lo usaremos para montar
las caras de nuestro Skybox y otra función que nos cárgara las
texturas.


Con esta clase siempre podremos crear cualquier Skybox a nuestro gusto
y de este modo tendremos nuestro mundo creado.

En el update() del juego tendremos que añadir este código.

Con esto haremos que el Skybox este siempre donde la cámara de
ese modo nunca nos saldremos de él.

Ahora os mostrare como creamos el suelo por el que queremos que se
mueva nuestro jugador.


Este método lo podemos añadir en el fichero java donde
estemos creando la escena del juego.

Si no queremos que la cámara se sitúe por debajo del
terreno debemos añadir el siguiente código en el
método update() del juego.


Entonces por el momento hemos montado el cielo, es decir la caja donde
transcurrirá el juego y el suelo del juego donde se
moverá nuestro jugador.

Ahora crearemos nuestro jugador.

Para hacer esto primero tenemos que hacer es cargar el modelo, para
ello nos creamos una clase llamada CargadorModelos y le ponemos este
código que sera el que nos permita cargar un xml para nuestro
muñeco.


Después no crearemos una clase para poder definir lo que
queremos que haga el jugador en nuestro caso la hemos llamado Mosca.


Como se puede comprobar es una clase derivada de Node. En esta clase
esta implementado algunos métodos esenciales como el método
update() que se ejecuta cada vez que el juego realiza su update(),
métodos interesantes de este código sería el GoTo ya que
haya la dirección a la que queremos que nuestro jugador se
mueva, el método RotarMosca() ya que en el se muestra como se
hace para rotar un personaje sobre su eje y, se puede observar que el vector
aux esta inicializado en la dirección que mira el jugador (este
debería haber sido pintado mirando hacia un eje especifico) en
nuestro caso el eje Z, entonces normalizamos el vector dirección
para que exista una intersección entre los dos vectores. Y por
último el método mueveMosca que implementa movimientos que la
mosca realizara cuando se pulsen las teclas correspondientes.

Si queremos que el jugador siempre que se mueva por el mapa esté siempre sobre la superficie debemos añadir este
código.


 La variable agl que es de tipo float contiene el valor de la
altura del BoundingBox del jugador, entonces al sumárselo a la
altura del mapa, conseguimos el punto donde tenemos que situar al
personaje.

Para crear las etiquetas encima de nuestros personajes, encontré
por internet una clase que se llama TextLabel2D y me solucionó este
problema.


Y la verdad es muy útil, con que se cree y se añada como
hijo al elemento que queramos etiquetar ya esta.

El código fuente de las clases implementadas las puede descargar de: fuentes.zip

Espero que les haya sido útil este tutorial, seguiremos
haciendo más tutoriales sobre esta tecnología
analizando más ejemplos algo más complicados,
todo el que quiera hacer una aportación será bien
recibida. Para comunicarme cualquier problema o sugerencia de mejora
podéis utilizar la zona de comentarios, de este modo todo el
mundo se podrá aprovechar de las respuestas.

Saludos.

2 Comentarios

  1. La verdad es que es muy interesante JME , ojala sigan haciendo tutoriales sobre el ya que no hay muchos ejemplos tan bien explicados por internet.

    Saludos.

  2. Hola, tengo un 3ds, despues que lo levanto con blender que le tengo que agregar, para luego convertirlo a xml y que lo reconosca el jmonkey, que coordenadas va a necesitar el jmonkey ????

Dejar respuesta

Please enter your comment!
Please enter your name here