Single Tech Games

Un Flappy Bird con C# en Unity 2D parte 2

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:
componente
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!

0 0 votes
Article Rating
Subscribe
Notify of
guest
33 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
José

Buenas Julio, tengo una duda ¿Como haces para manejar el personaje? Puse el código tal cual y solo aletea como en la animacion

ricardo chavez

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.

ivo

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

alexis josafath

disculpa no me aparece lo x,y,z esta mal escrito el codigo? necesito ayuda

Ernesto Ramirez

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

Ernesto Ramirez

No, hice el tutorial justo como tu pero en esa parte de hacer el scrip me sale ese error ¿que podrá ser?

Edd

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.

Shan

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.

Shan

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 .

Shan

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.

Shan

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.

miguel

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?

Damian

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.

Damian

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?

Manuel

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?

mmm

Como siempre, gracias por tus videos! SAludos!!

Heri

Que pasa con tu nuevo juego? lo estoy esperando desde marzo que dijiste que lo publicarias, ni pistas de que se trata das.