jueves, 20 de abril de 2017

Crear un juego de coches en Unity 5. Script CarController. Parte 3 de 3

Vamos a abrir en el proyecto que creamos en los post anteriores llamado CarProject. Vamos a crear en la carpeta Scripts un nuevo script llamado CarController.



Vamos a abrir el Script con el programa Monodevelop que viene por defecto dentro de Unity, haciendo doble clic sobre el script. Una vez abierto, vamos a crear los atributos



Los 4 primeros atributos de la clase son referencias a los GameObject que les hemos agregado el componente WheelCollider.

El atributo fuerzaMotor se refiere a la fuerza de rotación que le vamos a aplicar a las ruedas para que giren y el coche se desplace.

El atributo fuerzaMotor se refiere a la maxima fuerza del motor.

El atributo giroRuedas se refiere al valor de giro derecha o izquierda de las ruedas delanteras.

El atributo maximoGiroRuedas se refiere al valor mayor de giro de las ruedas.

El atributo freno se refiere a la fuerza en oposición del movimiento. Fuerza para detener el giro de las ruedas.

El atributo estoyFrendo indica si se esta apretando el botón del freno. Su valor es true o false.

El atributo centroDeMasas se refiere a la posición del centro de masas del vehículo.

El atributo positionRueda y rotationRueda se emplearan para posicionar el GameObject que posee el WheelCollider (que genera el giro) en el centro del modelo de rueda.

Una vez explicados cada uno de los atributos vamos a darle valores iniciales a estos atributos.

También vamos a asignarle el centro de masa al vehículo.



Ahora vamos a calcular la fuerza del motor, el giro y el frenado.


El vehiculo se desplazará con el Flecha arriba para ir hacia adelante, con la Flecha abajo para ir hacia atras (tambien teclas w y s respectivamente) girará hacia la derecha con la Flecha derecha y hacia la izquierda con la Flecha izquierda (teclas d y a respectivamente). También con la Barra espaciadora frenará.

Le asignamos la ruedas delanteras y traseras la fuerza del moto (o solo a las delanteras dependiendo del tipo de vehículo) y solo a las delateras el giro.


Ahora vamos a aplicarle a la WheelCollider una fuerza de frenado. En función que dejemos apretado el botón de frenar (Barra Espaciadora) el vehículo frenará. Le he dado una fuera de 400.0 de frenado.



Tras esto lo único que nos queda es asignar el centro a la rueda al centro del modelo para que al girar la rueda gire el modelo simultáneamente.



Transform ruedaDD  = ruedaDelanteraDerecha.gameObject.transform.GetChild(0);
ruedaDelanteraDerecha.GetComponent<WheelCollider>().GetWorldPose(out positionRueda, out rotationRueda);
ruedaDD.transform.position = positionRueda;
ruedaDD.transform.rotation = rotationRueda;

La primera de las sentencias obtiene el primero de los hijos de las ruedas, es decir, los centros.
La segunda sentencia optiene la posición y rotación del padre (rueda) y la introduce en positionRueda y en rotationRueda.
Las dos siguientes lineas es poner en la posición y rotación obtenida la rueda en los centros.

Con esto ya tenemos finalizado el script.

Ahora vamos a asignarselo al GameObject llamado Vehículo.


Como se puede observar tenemos que asignar en el script cada uno de los GameObject que tienen el componente WheelCollider.




Una vez asignado, pulsamos el botón Play, y en el panel de Game podremos desplazar el vehículo con los flechas de nuestro teclado.









2 comentarios:

  1. Hola. Yo hice todo pero mis ruedas se caen. Me podrias mandar tus modelos de ruedas?. Gracias

    ResponderEliminar
  2. Me sale error, cannot implicity convert type quaternion to vector 3 , help

    ResponderEliminar

Incluir anuncios en mis juegos con AdMob de Google. Unity 5.Script C# para Google Admob. Paso 4 de 4

Vamos a escribir el código necesario para mostrar los anuncios en nuestro juego. Lo primero vamos a crear dentro de la carpeta Assets la car...