Single Tech Games

Tutorial de Unity 2.5D V – Animando usando Código

Hola gente! Les traigo un nuevo vídeo de la serie de tutoriales de 2.5D hoy, es algo bastante nuevo, la animación por código para todos esos amantes de la programación, como yo, y les tengo buenas noticias, la verdad es que funciona mejor que el mecanim :P, si no vas a hacer cosas muy complicadas como escalar o rotar en unity 2D, pues creo que es una buena opción, claro que rotar escalar, cambiar de colores también se puede hacer, pero resultará un poco más complicado, pero igual es una opción que yo, particularmente, voy a utilizar ya que es mucho más rápido trabajar de esta forma.

Código

using UnityEngine;
using System.Collections;
public class AnimacionesScript : MonoBehaviour {
	//estado = 0 (parado norte) estado = 1 (caminando norte)
	//estado = 2 (parado noreste) estado = 3 (caminando noreste)
	//estado = 4 (parado este) estado = 5 (caminando este)
	//estado = 6 (parado sureste) estado = 7 (caminando sureste)
	//estado = 8 (parado sur) estado = 9 (caminando sur)
	//estado = 10 (parado suroeste) estado = 11 (caminando suroeste)
	//estado = 12 (parado oeste) estado = 13 (caminando oeste)
	//estado = 14 (parado noroeste) estado = 15 (caminando noroeste)
	public int estado = 1;
	public Sprite[] spritesNorte;
	public Sprite[] spritesNorEste;
	public Sprite[] spritesEste;
	public Sprite[] spritesSurEste;
	public Sprite[] spritesSur;
	public Sprite[] spritesSurOeste;
	public Sprite[] spritesOeste;
	public Sprite[] spritesNorOeste;
	public float framesPorSegundo;
	private SpriteRenderer spriteRenderer;
	private bool pausa;
//	private float tiempoEntreEstados = 0.12f;
	// Use this for initialization
	void Start () {
		spriteRenderer = renderer as SpriteRenderer;
		//pausa debe ser igual auna variable global pausa
	}
	// Update is called once per frame
	void Update () {
		if(pausa == false)
		{
			int indice = (int)(Time.timeSinceLevelLoad * framesPorSegundo);
			//Debug.Log(((int)Time.timeSinceLevelLoad * framesPerSecond) % sprites.Length);
			indice = indice % spritesNorte.Length;
			Debug.Log(indice);
			if (estado == 0)
				spriteRenderer.sprite = spritesNorte[ 5 ];
			if(estado == 1)
				spriteRenderer.sprite = spritesNorte[ indice ];
			if (estado == 2)
				spriteRenderer.sprite = spritesNorEste[ 5 ];
			if(estado == 3)
				spriteRenderer.sprite = spritesNorEste[ indice ];
			if (estado == 4)
				spriteRenderer.sprite = spritesEste[ 5 ];
			if(estado == 5)
				spriteRenderer.sprite = spritesEste[ indice ];
			if (estado == 6)
				spriteRenderer.sprite = spritesSurEste[ 5 ];
			if(estado == 7)
				spriteRenderer.sprite = spritesSurEste[ indice ];
			if (estado == 8)
				spriteRenderer.sprite = spritesSur[ 5 ];
			if(estado == 9)
				spriteRenderer.sprite = spritesSur[ indice ];
			if (estado == 10)
				spriteRenderer.sprite = spritesSurOeste[ 5 ];
			if(estado == 11)
				spriteRenderer.sprite = spritesSurOeste[ indice ];
			if (estado == 12)
				spriteRenderer.sprite = spritesOeste[ 5 ];
			if(estado == 13)
				spriteRenderer.sprite = spritesOeste[ indice ];
			if (estado == 14)
				spriteRenderer.sprite = spritesNorOeste[ 5 ];
			if(estado == 15)
				spriteRenderer.sprite = spritesNorOeste[ indice ];
		}
	}
	public void pararAnimacion()
	{
		estado = estado - 1;
	}
	public void comenzarAnimacion()
	{
		estado = estado + 1;
	}
}

Proyecto
 https://www.box.net/shared/1u6dtcrydzsgwbducp9v
Vídeo
Explicación del código de animación 1
https://www.youtube.com/watch?v=qTw2SA3jGkI#t=2m21s
Implementando la animación por código
https://www.youtube.com/watch?v=qTw2SA3jGkI#t=9m14s
Explicación del código de animación 2
https://www.youtube.com/watch?v=qTw2SA3jGkI#t=14m01s
Suerte!

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
alejandro

no funciona el codigo, al aplicarle el codigo a la imagen del huntress no me aparecen los cuadros para inicializar las variables de spritesnorte, spritessur, framesPorSegundo…
copie y pegue el codigo, el del tutorial anterior de multiplicar el fondo si me funciona por ejemplo…
que puede ser?