Contents

Mejoras

Mejoras

A sugerencia de un alumno, se podría mejorar el comportamiento de la nave al llegar a los límites de modo que no sea posible salirse de ellos aún cuando la nave sigue rotando. Para ello, bastaría con modificar el método FixedUpdate de NaveController para que quite velocity en el eje de movimiento al llegar a los límites. Además, haremos la rotación de la nave dependiente de la variable movimientoH (porque si no al llegar a los límites dejará de rotar al haberle quitado velocity:

void FixedUpdate () {

		//Capturo el movimiento en horizontal y vertical de nuestro teclado
		float movimientoH = Input.GetAxis("Horizontal");
		float movimientoV = Input.GetAxis("Vertical");

		//Genero el vector de movimiento asociado, teniendo en cuenta la velocidad
		Vector3 movimiento = new Vector3(movimientoH * velocidad, 0.0f, movimientoV * velocidad);

		//Aplico ese movimiento al RigidBody de la nave
		rb.AddForce(movimiento);

        //Le quito la velocity (x o z) si llega a los límites
        if (rb.position.x < xMin || rb.position.x > xMax)
        {
            rb.velocity = new Vector3(0, 0, rb.velocity.z);
        }
        if (rb.position.z < zMin || rb.position.z > zMax)
        {
            rb.velocity = new Vector3(rb.position.x, 0, 0);
        }

        //Restrinjo la posición de la nave a los límites del juego
        rb.position = new Vector3
        (
            Mathf.Clamp (rb.position.x, xMin, xMax),
            0.0f,
            Mathf.Clamp (rb.position.z, zMin, zMax)
        );

        //Rotación de la nave en Z en función del movimiento h, la velocidad y el giro
        rb.rotation = Quaternion.Euler(0.0f, 0.0f, movimientoH * velocidad * giro);

    }
Para finalizar, modifica el valor de la variable giro a -1 si no quieres que la nave rote tanto. SI estás interesado en avanzar todavía más, te invito a seguir los dos videos siguientes (en inglés):

Ver vídeo

Extending Space Shooter

Ver vídeo

Mobile Development: Space Shooter
En el primero de ellos se añaden enemigos, mas daños, un fondo que se va moviendo, etc. y en el segundo se adapta el juego para que los controles funcionen en dispositivos móviles.