Single Tech Games

single tutorial unity 2d android

Tutorial de Unity 2D (Ver 4.3) – Un juego básico de plataforma para Android IV

Hola Gente! El día de hoy avanzamos un poquito más en el juego, esta vez veremos línea de vista, ósea que nuestro enemigo reaccione cuando nos tenga en la mira. Esto es un error muy común en los juegos, no sé si han jugado MineCraft o SurvivalCraft pero si lo juegan se darán cuenta que no importa si están en la cima del cerro detrás de muros de piedra, en el fondo de la tierra, donde sea, si hay un animal que te “siente” cerca te va a querer atacar aún si le es imposible verte, cosa que puede ser estrategia del juego también, para hacerlo más difícil.

Entonces lo que aprenderemos hoy será a darle un rango de vista a nuestro enemigo, así solo cuando nos encuentre sucederá algo, en este caso aparecerá un signo de exclamación, como en el metal gear de Play Station, además veremos cómo crear una función que se repite constantemente cada cierto tiempo desde un momento determinado y por ultimo cómo hacer para que un objeto ignore las colisiones de ciertas capas.
Código

EnemigoScript

using UnityEngine;
using System.Collections;
public class EnemigoScript : MonoBehaviour {
	public Transform inicioVista,finVista;
	public bool encontrado;
	public bool izquierda;
	public GameObject exclamacion;
	// Use this for initialization
	void Start () {
		InvokeRepeating ("Vigilar", 0f, Random.Range(2f,6f));
	}
	// Update is called once per frame
	void Update () {
		Raycasting ();
		Comportamiento ();
	}
	private void Comportamiento(){
		if (encontrado) {
			exclamacion.SetActive(true);
		}else{
			exclamacion.SetActive(false);
		}
	}
	void Raycasting(){
		Debug.DrawLine (inicioVista.position, finVista.position, Color.red);
		encontrado = Physics2D.Linecast (inicioVista.position, finVista.position,1<< LayerMask.NameToLayer("Jugador"));
	}
	private void Vigilar(){
		izquierda = !izquierda;
		if(izquierda){
			transform.eulerAngles = new Vector2 (0,0);
		}else{
			transform.eulerAngles = new Vector2 (0,180);
		}
	}
}

JugadorScript

Physics2D.IgnoreLayerCollision (9, 10);
//Physics2D.IgnoreLayerCollision (LayerMask.NameToLayer("Jugador"), LayerMask.NameToLayer("Enemigo"));


Suerte!

0 0 votes
Article Rating
Subscribe
Notify of
guest
8 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Jhon Fredy

Hola Julio,
una pregunta que diferencia hay enre utilizar el LineCast de esta forma
public LayerMask layerJugador;
Physics2D.Linecast (inicioVista.position,finVita.position,layerJugador);
con la forma que usted utiliza
Gracias

Jhon

Hola Julio, una pregunta que diferencia es hacer el LineCast de esta forma
public LayerMask layerJugador;
Physics2D.Linecast (inicioVista.position,finVita.position,layerJugador);
a como usted lo hace corriendo ese bit

Carlos

Hola, ya subiste el proyecto con el código, a mi también me gustaría poder lo trabajar… gracias

frank

Amigo me puedes prestar el codigo fuente de este proyecto tutorial de Unity 2D (Ver 4.3) – Un juego básico de plataforma para Android IV … te lo agradecería estoy aprendiendo con tus videos