Hola Gente! Me desaparecí unos días 😛 quise darme un pequeño break pero regreso con un nuevo vídeo, aunque se puede decir que es la actualización de uno muy visto, y es que por fin continuo con el Flappy Bird y lo llevo a la versión 5.
Cambios que hice: Solo en el Menú UI el resto no ha cambiado para nada es el mismo código para las versiones anteriores y la nueva Unity 5.
Código
flappyScript
using UnityEngine; using System.Collections; public class flappyScript : MonoBehaviour { //Declaramos la velocidad inicial del pajaro sea igual a zero, Vector3.zero = 0,0,0 //1,1,0 Vector3 velocidad = Vector3.zero; //Declaramos un vector que controle la gravedad, no usaremos la fisica de unity public Vector3 gravedad; //Declaramos un vector que define el salto (aleteo) del pajaro public Vector3 velocidadAleteo; //Declaramos si se debe aletear, si se toco la pantalla o se presiono espacio bool aleteo = false; //Declaramos la velocidad maxima de rotacion del pajaro public float velocidadMaxima; public TubosScript tubo1; public TubosScript tubo2; private Animator anim; private bool juegoTerminado; private bool juegoIniciado; public RectTransform botonesMenu; // Use this for initialization void Start () { anim = this.gameObject.GetComponent<Animator> (); } // Update is called once per frame void Update (){ //aumenta con el numero de presiones en la pantalla int numPresiones = 0; foreach (Touch toque in Input.touches) { if (toque.phase == TouchPhase.Ended) numPresiones++; } //Si la persona presiona el boton de espacio o hace clic en la pantalla con el mouse, o tocas con el dedo if (Input.GetKeyDown(KeyCode.Space) | Input.GetMouseButtonDown(0) | numPresiones > 0) { if(juegoTerminado == false) aleteo = true; juegoIniciado = true; tubo1.juegoIniciado = true; tubo2.juegoIniciado = true; } if(juegoTerminado) MostrarBotones(); } //Este es el update de la fisica, que es ligeramente mas lento que el update del juego void FixedUpdate () { if(juegoIniciado) { //A la velocidad le sumamos la gravedad (Para que el pajaro caiga) velocidad += gravedad * Time.deltaTime; //Si presionaron espacio o hicieron clic if (aleteo == true) { //Que solo sea una vez aleteo = false; //El vector velocidad recibe el impulso hacia arriba al pajaro velocidad.y = velocidadAleteo.y; } //Hacemos que el pajaro reciba la velocidad (la gravedad lo hace caer mas rapido) transform.position += velocidad * Time.deltaTime; float angulo = 0; if (velocidad.y >= 0) { //Cambiamos el angulo si Y es positivo que mire arriba angulo = Mathf.Lerp (0, 25, velocidad.y/velocidadMaxima); } else { //Cambiamos el angulo si Y es negativo que mire abajo angulo = Mathf.Lerp (0, -75, -velocidad.y/velocidadMaxima); } //Rotamos transform.rotation = Quaternion.Euler (0, 0, angulo); } } //Cada vez que haya una colision con cualquier objeto que tenga un collider se actiavara esta funcion //Collider son Box Collider 2D, Circle Collider 2D, etc. void OnCollisionEnter2D (Collision2D colision) { //Si colisionamos con el tubo, que se detengan los tubos if(colision.gameObject.name == "TuboAbajo" | colision.gameObject.name == "TuboArriba"|colision.gameObject.name == "Piso") { //Hacemos que la velocidad de los tubos se haga cero tubo1.velocidad = new Vector3(0,0,0); tubo2.velocidad = new Vector3(0,0,0); anim.SetTrigger("JuegoTerminado"); juegoTerminado = true; } if(colision.gameObject.name == "Piso") { gravedad = new Vector3(0,0,0); } if(colision.gameObject.name == "TuboAbajo") { colision.gameObject.GetComponent<BoxCollider2D>().enabled = false; } } private void MostrarBotones() { botonesMenu.gameObject.SetActive(true); } }
ManejadorBotonesScript
using UnityEngine; using System.Collections; public class ManejadorBotonesScript : MonoBehaviour { public void BotonReiniciar() { Application.LoadLevel("escena1"); } public void BotonLogin() { } public void BotonPuntajes() { } public void BotonInterestitial() { // admob.ShowInterstitial(); // admob.HideBanner(); } }
Suerte!
Hola Julio!
Recién encontré tu blog y todo es muy interesante para mi! Felicidades por todo tu trabajo!
Tengo un par de preguntas. Entiendo que si uno utiliza Unity gratuitamente entonces necesariamente al bajar e instalar la app en tu telefono aparecerá el icono de Unity. Es posible cambiar esto gratuitamente? Me parece que el icono de Unity aparece al abrir la aplicacion “Made with Unity”. Yo no me refiero al abrirlo, si no mas bien el pequeño icono para presionar y entrar a la app.
Hola Julio nuevamente!
Tenía una duda de rendimiento.
Recientemente he acabad este tutorial, y va perfecto desde el propio motor Unity. Pero si lo pongo en mi android el pájaro no responde con la misma precisión que lo hace en el ordenador. Porque? a parte que no responde igual desde que pulso a la pantalla hasta que el pájaro reacciona pasan unos mili-segundos que se llegan a apreciar.
Esto a qué es debido? y como le pongo un solución correcta?
Gracias!
Hola, que celular tienes? puede ser que si sea ese problema, el motor de unity es pesadito y puede hacer lag a un juego
Hola Julio!
1r felicidades por tu web! la verdad hace unos días que la encontré y me ha enganchado! jaja
Queria preguntarte el tema de licencias:
Si haces un juego gratuito con publicidad incorporada, se necesita pagar la licencia de Unity para publicarlo?
Ya que bueno estas sacando un beneficio, y la gente que recién empieza pagar tal cantidad de dinero es un poco suicidio.
Yo hasta ahora estaba usando el framework gratuito Cocos2d…pero me intriga saber como va lo de la licencia!
Gracias 😀
Pues cocos2D es muy bueno, en Unity no tienes que pagar nada a menos que hagas ingresos mayores a 100 mil dolares anuales con los juegos de unity, claro con esos numeros pagar la licencia es nada, una de las ventajas visibles es que ya no aparecera el logo de Unity al inicio del juego y puedes hacer ciertas mejoras en rendimiento