Mostrando entradas con la etiqueta videojuegos. Mostrar todas las entradas
Mostrando entradas con la etiqueta videojuegos. Mostrar todas las entradas

9 de enero de 2012

Controles de movimiento en Unity3D (2ª parte)

Continuando con el anterior post, voy a explicar como darle un control un poco mas realista al juego. Aunque con la función transform.Translate() podemos hacer movimientos básicos que nos valdría perfectamente para un shooter o un arcade, en este parte vamos a trabajar con la función constantForce() que permite ejercer fuerzas, condicionando de esta forma el movimiento al motor de físicas de unity3d. Este tipo de movimiento es mas adecuado para vehículos, por ejemplo.

Antes de nada, tenéis que añadir al objeto que queréis que se aplican estas fuerzas el componente "constant Force" desde el menú "component">"Physics" (este componente también añade el Rigidbody, si no estaba ya asociado al objeto).

Ahora, creamos un nuevo script y declaramos unas variables para controlar movimiento y rotación.

var velocidad = 0;
var rot = 0;
var maxVel = 10000;
var minVel = 0;
var maxRot = 100;

Ahora toca introducir las funciones para detectar los Input. En este caso vamos a utilizar otra función del objeto Input.

if(Input.GetKey(KeyCode.W))vel=vel+100;
if(Input.GetKey(KeyCode.S))vel=vel-100;

Con estas lineas tendremos una sensación mas realista de "aceleración", y para no llegar a velocidades absurdas, sentencias de control:

if(velocidad>=maxVel) vel=1000;
if(velocidad<=minVel) vel=0;;
if(rot>=maxRot)rot=100;
if(rot<=minVel)rot=0;

Añadiremos ahora estas funciones. En realidad, constantForce hace referencia a las variables de la componente que hemos añadido, y para especificar que tipo de fuerza y en que dirección queremos aplicarla utilizaremos:

constantForce.relativeForce.z=vel*Time.deltaTime;

Con esto obtenemos una aceleración algo mas escalada y limitada, todo es jugar con los números para encontrar los valores que se ajusten a lo que queremos.

Para terminar, añadiremos dos lineas que nos permitirán rotar el objeto con el ratón:

transform.Rotate(0,Input.GetAxis("Mouse X") *rot*Time.deltaTime,0);
transform.Rotate(Input.GetAxis("Mouse Y") *rot*Time.deltaTime,0,0);

Las características de estos "Mouse X" y "Mouse Y" podéis encontrarla en los Inputs preestablecidos (edit>project settings>Inputs)

Pero también podemos utilizar el Input.GetKey() para rotar el objeto de la misma forma que acelera, usando la variable que nos dejamos atrás (rot) y la función constantForce.relativeTorque:

if(Input.GetKey(KeyCode.D))rot=rot+10;
if(Input.GetKey(KeyCode.A))rot=rot-10;

constantForce.relativeTorque.y=rot*Time.deltaTime;

Dejando así el ratón únicamente para el giro en el eje X.

Con solo este puñado de funciones ya podemos hacer cosas interesantes, aunque no hay que olvidar que uno de los componentes que trae Unity por defecto es un controlador para FPS mucho mas refinado, al que podemos acceder desde component>character>FPS input controller y añadiéndolo al objeto que queramos.

Para el siguiente tutorial voy a seguir perfeccionando el control, ya que aunque ha mejorado, os habréis fijado que los variables del componente constantforce, que debería aumentar, se mantienen en unos valores pequeños, y es que esta es la variable que debería de aumentar de forma gradual. Ademas, quiero añadir un variable que reduzca la aceleración del objeto conforme la velocidad aumenta, para hacerlo mas realista.

Un saludo!

10 de diciembre de 2011

StencylWorks

Hace tiempo di con un blog que es un ejemplo perfecto de lo que quería conseguir con este blog: Quiero ser creador de videojuegos alojado aquí mismo en blogger.

Pantallazo de la interfaz, con un ejemplo de un juego estilo RPG

Y digo esto porque hace unos días compartió una entrada con una descripción de un programa llamado StencylWorks, una herramienta para desarrollar videojuegos en flash, sin necesidad de ser un experto en programación y concretamente ActionScript, aunque por supuesto posee una herramienta para trastear con las entrañas del juego, de echo me ha llamado mucho la atención la forma de distribuir el código en forma de etiquetas que cambian el color según anidamos el código, y, dentro de esas etiquetas, seleccionar la acción que queremos que haga mediante un menú desplegable, simple y rápido, aunque no demasiado flexible, pero suficiente para lo que pudiéramos necesitar en un juego flash.



Es bastante parecido al GameMaker de YoYoGames, aunque completamente gratuito.

Lo que os decía del código, etiquetas anidadas y botones desplegables

El programa trae algunos ejemplos para estudiar su funcionamiento y tiene una interfaz bastante agradable de manejar, muy intuitivo todo. 

Lo meto en el cajón de programas posibles con los que empezar a desarrollar nuestros primeros juegos en flash. Si finalmente lo utilizamos, trabajaré en unos pocos tutoriales para manejarlo (ahora mismo sigo estudiando JAVA)


28 de noviembre de 2011

Codigo de Doom 3 liberado y videos del documental

Hace unos días se liberaba el código fuente de Doom 3, uno de los grandes lanzamientos de la pasada época, quería dejar aquí el enlace a ese código, y explicar, que aunque tiene licencia GPL v3 hay ciertos elementos como mapas, niveles, sonido, que no están disponibles pues pertenecen a sus respectivos autores.
Pero a nosotros lo que nos interesa es el código fuente, la programación, aquí tenéis el enlace a GitHub (una red social de programadores que comparten códigos liberados y mantienen una comunidad, que, educativamente, creo que vale oro). Podéis descargarlo aquí

De paso, os dejo los enlaces al resto de los videos del documental.: