Hola gente! Hoy les traigo la continuación del video de Flappy Bird con Unity 2D, esta vez metemos mano a la programación, intentaré utilizar código entendible y no muy complejo, además voy a comentar línea por línea para que les quede de referencia en futuros proyectos, en caso sientas que debo bajar un poco el nivel o quieren una explicación más de algo básico siempre puedo hacer un séptimo video de Aprender C# desde cero, yo mismo iré agregando más en caso veo que falta explicar algo, o algo necesita su propio video.
Si no les aparece las imágenes al abrir el juego de la semana pasada tienen que modificar esto dentro de los componentes de cada objeto-imagen:
Order in layer significa, orden de la imagen en la capa, entre más alto sea el número estarán por encima de las otras imágenes (Ojo que solo las que lleven el componente Sprite-Renderer).
Bueno contarles que esta semana estuve muy ocupado armando mi nueva computadora, la verdad es todo un tema esto, esta es la segunda vez que lo hago, y lo malo es que me quita tiempo de mi juego, donde ya voy terminando el menú inicio y se supone que hoy debía estar terminado según mis cálculos U_U y ya necesito un tráiler urgente, tiempo no me abandones!!!.
Código
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; // Use this for initialization void Start () { } // Update is called once per frame void Update (){ //Si la persona presiona el boton de espacio o hace clic en la pantalla con el mouse if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { aleteo = true; } } //Este es el update de la fisica, que es ligeramente mas lento que el update del juego void FixedUpdate () { //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); } }
Pd-> Los chicos de Chicha Games tiene un nuevo juego llamado: Brasil Fútbol 2014 Gol Penales, bajenlo que esta bueno 🙂
Suerte!
Buenas Julio, tengo una duda ¿Como haces para manejar el personaje? Puse el código tal cual y solo aletea como en la animacion
Bueno conforme vamos avanzando en los vídeos, el código del personaje se a desarrollando
Hola chicos, tengo un problema en el script, andava leyendo los comentarios aver si alguien tenia el mismo problema pero me dio flojera xd, bueno es en la lime 36, el if (aleteo==true),
Dise parser error: unexpected symbol “if”, ayuda porfavor.
Revisa si el ; se lo has puesto a la linea anterior
hola, gracias por los videos, te queria hacer una pregunta, donde se puede estudiar a programar? me gustaria hacer juegos pero quiero aprender bien, no se hacer cursos de unity pero aca en chile no e visto nada. que me recomiendas estudiar? saludos
No soy de chile, no conozco muy bien su mercado de enseñanza en videojuego, pero yo jamas fui a una escuela de videojuegos, aprendí primero a programar en la uni, las cosas normales que enseñan y el resto por internet 🙂
disculpa no me aparece lo x,y,z esta mal escrito el codigo? necesito ayuda
A que te refieres a X Y Z pasame el minuto del video por favor que no entiendo la pregunta
Tengo un problema lo que pasa es que cuando pongo el escrip me sale este erro -> te dejo un link a una imagen espero me ayudes
http://www.subirimagenes.com/imagen-sinttulo-9304395.html
El script que usaba ese objeto ya no se encuentra, es posible que lo hayas borrado.
No, hice el tutorial justo como tu pero en esa parte de hacer el scrip me sale ese error ¿que podrá ser?
Como te comento, te flata un script o lo has borrado o le has cmabiado de nombre, lo que debes hacer es buscar el script que le corresponde y vovlerselo a colocar al objeto
Disculpa Julio Cesar: Estoy iniciando en el mundo de la programacion y me tope con tus videos no son los primeros que veo pero si los primeros que me hacen entender y sentirme en confianza de poder hacer algo por mi cuenta, ahora tengo un problema estoy siguiendo estos videos de clonado de flappy bird tal y como lo haces, pero, tengo un problema al poner el script de movimiento del personaje, yo tengo la version de unity 4.5.4 no se sitenga algo que ver pero no me deja modificar la gravedad, velocidad y velocidad maxima en seccion de scripts cuando se selecciona al personaje en unity, si me pudieras ayudar para poder modificarlo de verdad te lo agradeceria. de antemano muchas gracias.
Pero te sale algún error, o algun comportamiento irregular? de repente es un error de código o te falto ponerle check a algo
Oh me he dado cuenta que en la pestaña Game no aparece nada, solo la pantalla azul… y me acabo de dar cuenta que cuando ejecutas… es ahi donde ves el juego mientras que yo lo veo en la pantalla de Escene, no se porque no se ve en game… no se si debe a que tengo que rotar la camara…. o que , porque segui todos tus pasos y a ti si te sale en el Game.
Hola! solo ve a window y coloca game, con eso te sladra la pestaña de game para que puedas ver el juego 🙂
Vale, no había error en el código, ya está solucionado, era cuestion de ponerle el mismo nombre al script…. que torpe soy 🙂 pero ya puedo continuar, gracias .
Te iba a decir lo mismo 🙂
En primer lugar te agradezco que me hayas contestado tan rápido. El para solventar errores de código finalmente copié el tuyo que tienes justo aquí mas arriba. En console no me sale nada… solo cuando le doy al play , ke dice algo relativo a no se que archivo de sonido pero eso… no tiene nada que ver creo con mi problema. En cambio en el Inspector, en flappy script me aparece un signo de advertencia con el siguiente mensaje :
The associated script can not be loaded .Please fix any compile errors and assign a valid script.
Lo que yo entiendo de este mensaje es que no esta bien asignado o que tiene errores de compilación o ambas cosas. no se si se debe como dices a error en el código, voy a repasar, pero vamos esta copiado y pegado del tuyo, y en console no me aparece nada como te digo 🙁
Si sabes algo de a que se debe dimelo por favor :). Gracias.
Hola, estoy siguiendo este tutorial para iniciarme en la programación y creación de videojuegos con Unity pensando en programar para android. El caso es que sigo todos tus pasos… pero en el minuto 9 aprox… de este segundo vídeo, en la parte del Inspector cuando seleccionas a flappy, en la parte de abajo no me aparecen los parámetros de gravedad velocidadAleteo y velocidadMaxima…. primeramente he escrito el código y como tenia un par de errores he copiado el tuyo, pero no se por que no me aparece. Si puedes responderme te lo agradezco para poder seguir con el tutorial. Gracias.
Seguramente tienes un error en el código, de repente un corchete mal cerrado o el nombre del script distinto, revisa esos pequeños detalles, pasame por aquí lo que te sale en console 🙂
Me salta este error :O
transform.rotation assign attempt for ‘Flappy’ is not valid. Input rotation is { NaN, NaN, NaN, NaN }.
UnityEngine.Transform:set_rotation(Quaternion)
Flappyscript:FixedUpdate() (at Assets/Imagenes y Personajes/Flappyscript.cs:55)
ALGUIEN SABE COMO SOLUCIONARLO?
Es un error raro, te recomendaria que cierres la escena, luego unity y lo vuelvas a abrir, quizás eso lo solucione, o cambia la resolucion, tb podría ayudar
Bueno lo otro ha sido una tonteria me faltaban los parentesis despues de “void FxedUdate” pero ahora me saltaron otros 2 errores
1:Error CS0117: ‘UnityEngine.Input’ no contiene una definición para ‘GetkeyDown’ (CS0117) (Assembly-CSharp)
2:Error CS0120: Se requiere una referencia de objeto para el campo, método o propiedad no estáticos ‘UnityEngine.Transform.position.get’ (CS0120) (Assembly-CSharp)
Este ultimo aparese en los dos transform
Espero me puedas ayudar.
GetkeyDown no existe en unity, existe GetKeyDown, son bien fastidiosos con el tema de las mayusculas y lo otro es mas bien al reves Transform es la clase Transform, mientras que transform es la instancia de la clase que necesitamos 🙂
Gracias por estos tutoriales enrealida ayuda, pero tengo un problema cuando llego a la linea 33( velocidad += gravedad * Time.deltaTime; ) me tira un error “Error CS1014: Se esperaba un descriptor de acceso get o set (CS1014) (Assembly-CSharp)” sera porque el vector no es publico que hago ¿tengo poner set o get al inicio de la line?
🙂
Sabes que copie y pegue el código C# pero en las opciones del Script en el Unity no me aparecen las opciones de gravedad, velocidad de aleteo ni la velocidad maxima, como lo puedo solucionar?
Bueno si esta en public no debería haber problema, lo más probable es que haya un conflicto y no se pueda compilar el código, revisa que los nombres sean iguales, en el archivo C# y en la clase
Como siempre, gracias por tus videos! SAludos!!
De nada Juan 🙂
Que pasa con tu nuevo juego? lo estoy esperando desde marzo que dijiste que lo publicarias, ni pistas de que se trata das.
Se sigue cocinando, ya estoy terminando el Menu, solo falta la IA, que ya tengo la mitad y que me pasen los sonidos que mande a hacer 🙂