Galería de tiro con Unity3D

Curso de Unity 3D

21.  
22.  
27.  
38.  

Primer paso – todo lo que ya vimos

  1. Colocamos el fondo y los enemigos con sus correspondientes animaciones en escena.
  2. Cuando pulsemos sobre cualquiera de los enemigos, debe mostrarse una traza.
  3. Finalmente, cambiaremos la traza por una animación de explosión.

Un único animal se mueve desde su posición a la parte izquierda de la pantalla

Vector.Lerp hace una traslación desde un punto inicial hasta otro final. Cuando el t vale 0, el objeto estará en PosIni, cuando t vale 1, el objeto estará en PosFin y cuando t tiene cualquier valor intermedio entre 0 y 1, el objeto estará en algún punto intermedio proporcional

Enemy.cs

public class Enemy : MonoBehaviour
{
  Vector2 posInit;
  Vector2 posEnd;
  float time;
  void Start()
{
    posInit = transform.position;
    posEnd = new Vector2(Utils.GetLeftSide(), transform.position.y);
  }

  private void Update()
{
    time += 0.1f * Time.deltaTime;
    transform.position =Vector2.Lerp(posInit, posEnd, time);
  }
}

Utils.cs

public class Utils: MonoBehaviour{
  public static float GetLeftSide(){
    return Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x;
  }

  public static float GetRightSide(){
    return Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x;
  }
}

Añadimos una corrutina para instanciar un animal a cada segundo

Un animal es instanciado en una posición de y aleatoria

Instantiate(orugaPrefab, new Vector3(Utils.GetRightSide(), Random.Range(Utils.Get0Height(), Utils.GetScreenHeight())), Quaternion.identity);

El animal es instanciado a la izquierda o derecha de la pantalla de manera aleatoria

El Animal debe moverse correctamente hacia la direccion contraria a la que fue instanciado

·El animal debe mirar en la dirección de desplazamiento

Detectando pulsación

Debemos hacer el objeto tenga un box collider.

Cuando un box collider va a tener movimiento, deberíamos añadirle un RigidBody. Esto evitará el recalculamiento del box collider cada vez que el objeto se desplace. La opción de Kinematic hará que las fuerzas no afecten al objeto.

 private void OnMouseDown(){
    print("Pulsado");
}

Animación de muerte

GetComponent<Animator>().Play("Explosion");

Destruir al enemigo

public static float GetAnimationClipTime(Animator animator, string animationName){
    float time = 0;
    RuntimeAnimatorController ac = animator.runtimeAnimatorController;    
    for (int i = 0; i < ac.animationClips.Length; i++){
      if (ac.animationClips[i].name == animationName){
        time = ac.animationClips[i].length;
        return time;
      }
    }
    return time;
  }

Generar una avispa, una oruga o una hormiga aleatoriamente

← Poner una imagen de fondo
Cubix →

Aviso Legal | Política de privacidad