Juegos en blender:FPS final

Dejamos el anterior articulo con nuestro FPS configurado con el juego de cámara y movimiento, ahora vamos a ver como añadir la función disparo a nuestro personaje.

Para ello vamos a crear dos objetos, un cubo y una esfera de la siguiente manera:

Situamos nuestro cursor3d cerca de la mirilla del rifle como vemos en la imagen A continuación creamos un cubo como vimos anteriormente pulsando la tecla espacio y escribiendo add cube y lo escalamos pulsando la tecla ** ** hasta que tenga un tamaño mas o menos a la escala que vemos en la imagen 0.0009. No importa que el cubo tenga un tamaño tan mínimo, el cubo no se visualizara luego en la imagen cuando tengamos listo todo el sistema de disparo. Es muy importante que alineamos correctamente nuestro cubo con la mirilla del rifle(o arma que usemos) para ello tenemos que jugar con las vistas y y mover el objeto con la tecla g para que quede como en la siguiente imagen:

Ahora vamos a hacer a emparentar a nuestro cubo con nuestro rifle como hicimos en los artículos anteriores con el prisma(nuestro personaje) y el rifle, para ello, con nuestro cubo seleccionamos, nuestro cubo y rifle con la tecla shift y pulsamos ctrl+p y seleccionamos object

Disparando

Lo primero que tenemos que hacer, es generar una esfera que sera nuestra bala, para ello simplemente nos situamos en cualquier parte de la vista y pulsamos la tecla espacio y escribimos «add sphere» y escalamos el objeto con la tecla s hasta que consigamos un tamaño mínimo, pero que nos permita selecciona el objeto, renombramos nuestro objeto como bala.

También necesitamos fijar la física del objeto en dynamic, en vez de static que es por defecto.

Una vez que lo tengamos en dynamic, tenemos que escalar el radio de colisión, para ello lo primero es cambiar la forma de colisión de box a sphere .

Posteriormente, escalamos el radio de colisión a un tamaño adecuado a nuestro objeto, mas o menos en mismo tamaño que nuestra bala, para ello reducimos el radio.

Para conseguir la lógica nuestro disparo, vamos a montar el siguiente esquema logico en el «logic editor»

1) Creamos un evento del tipo mouse, donde le indicamos que al accionar el botón izquierdo del ratón, se cree un actuador que genere un objeto bala(una esfera que previamente hemos creado,definido y escalado)

2) Creamos un evento con nuestra bala del tipo «motion» indicando que la esfera avance 0.10 en la escala de la Y y tenga una velocidad de 0.50.

3) Situamos nuestra bala en otra capa

4) Generamos un par de cubos en nuestra escena para probar el disparo como vimos anteriormente.

Si empezamos a disparar veremos que los cubos no se mueven, eso es porque tenemos definidos los cubos como statics que es el valor por defecto, si queremos que los cubos tengan físicas tendremos que definiros como dynamic o rigid body y definir su colisión, si cambiamos esto veremos que podemos disparar a nuestros cubos y cuando la bala colisione contra ellos saldrán literalmente volando(podemos cambiar el radio de colisión,la fuerza de la misma y los atributos de la física del objeto para darle mas realismo)

Evidentemente estos artículos no pueden abarcar todo lo que con llevaría realizar un fps completo(rigging,texturas,animaciones,scripting), pero creo que con ellos si podemos hacernos una idea de lo que podemos crear con blender, si le decidamos tiempo y ganas.

Extras

  • Podemos hacer que nuestro suelo plano se transforme en una especie dungeon, o sala laberíntica al estilo doom simplemente, dividiendo nuestro suelo en usando la herramienta de estrusion.

  • Podemos texturizar nuestro escenario, con imágenes y UV mapping

  • Podemos usar scripts en python para determinar cuando un enemigo es disparado, para generar un contador de vidas o simplemente cambiar la animacion del enemigo cuando esto ocurra,etc…

Como veis, blender es una herramienta muy completa,para realizar,juegos,animaciones,presentaciones,etc.. por lo que os animo a echarle un vistazo.

Compartir

1 Comentario

Deja una respuesta

Your email address will not be published. Required fields are marked *