Single Tech Games

single tutorial unity 2d android

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

Hola gente! Sorry por el retraso pero tuve un problema técnico ayer, y recién pude subir el video hoy, no hay muchas novedades solo que no he avanzado ni un coraja de mi juego ya que tuve la visita de un tío de EEUU pero me hizo revisar maestrías de videojuegos en EEUU y Holanda que están muy interesantes, en particular las de Georgia Institute of Technology y la NHTV (¡No! no es un canal de televisión, es la Universidad de ciencias aplicadas de Breda pero en holandés) en este ultimo conozco a una gran amiga mía que se dedica al rubro de videojuegos aunque ella está en programación de juegos AAA especializándose en física… claro y yo aprendiendo a usar Box2D en Unity… me siento ignorante 🙁 … ella ya está en un nivel donde todo lo ve formulas matemáticas, en fin este mundillo de videojuegos es Ancho y Ajeno…


Nuevo Juego hecho con Unity 2D! Dribleen a tantos rivales como les sea posible en este, mi último juego sobre la Super Pixel Soccer Euro Francia 2016, super original donde tendrás que usar ambos hemisferios de tu cerebro para ganar.
AdGrande
Euro 2012 Penalty Game


PD- > No olviden bajar otros mis juegos también! 😛 http://singletechgames.com/category/juegos/


Bueno hoy, aprenderemos a hacer controles táctiles en Unity 3D 4.3 para aplicar en nuestros juegos 2D, con estos controles podremos hacer juegos para celulares, tabletas, y cualquier dispositivo móvil, en este caso me concentraré en Android, ya que por ahora es el único dispositivo que tengo para probar, pero no creo que haya una gran diferencia con IOS o Windows Phone, tomaré de referencia un juego de tipo plataforma y  más adelante haré que el personaje salte y después línea de visión de los enemigos con RayCasting.
PD-> Los últimos códigos están teniendo problemas por un bug de WordPress donde aparece es algo que no puedo solucionar, por favor si lo llegasen a encontrar bórrenlo
Paquete
https://www.box.net/shared/35mpltnf48vkj6gavibd
Código
PersonajeScript

using UnityEngine;
using System.Collections;
public class PersonajeScript : MonoBehaviour {
	// Use this for initialization
	private JugadorScript[] jugadores;
	void Start () {
		jugadores = GetComponentsInChildren<JugadorScript> ();
	}
	// Update is called once per frame
	void Update () {
	}
	public void MoverJugadorDerecha(){
		foreach (JugadorScript jugador in jugadores) {
			if(jugador != null){
				jugador.moverDerecha();
			}
		}
	}
	public void MoverJugadorIzquierda(){
		foreach (JugadorScript jugador in jugadores) {
			if(jugador != null){
				jugador.moverIzquierda();
			}
		}
	}
}

botonDerScript

using UnityEngine;
using System.Collections;
public class botonDerScript : MonoBehaviour {
	private PersonajeScript personaje;
	private CircleCollider2D presionar;
	// Use this for initialization
	void Start () {
		presionar = GetComponent<CircleCollider2D>();
	}
	// Update is called once per frame
	void Update () {
		tocandoPantalla ();
	}
	private void tocandoPantalla(){
		int numPresiones = 0;
		foreach (Touch toque in Input.touches) {
			if (toque.phase != TouchPhase.Ended && toque.phase != TouchPhase.Canceled)
				numPresiones++;
		}
		if (numPresiones > 0 | Input.GetMouseButtonDown (0)) {
			//Vector3 posicionTap = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
			Vector3 posicionTap = Camera.main.ScreenToWorldPoint (Input.mousePosition);
			Vector2 posicionTap2D = new Vector2 (posicionTap.x, posicionTap.y);
			bool presiono = presionar.OverlapPoint (posicionTap2D);
			if (presiono) {
				personaje = this.transform.parent.gameObject.GetComponent<PersonajeScript> ();
				personaje.MoverJugadorDerecha ();
			}
		}
	}
}

botonIzqScript

using UnityEngine;
using System.Collections;
public class botonIzqScript : MonoBehaviour {
	private PersonajeScript personaje;
	private CircleCollider2D presionar;
	// Use this for initialization
	void Start () {
		presionar = GetComponent<CircleCollider2D>();
	}
	// Update is called once per frame
	void Update () {
		tocandoPantalla ();
	}
	private void tocandoPantalla(){
		int numPresiones = 0;
		foreach (Touch toque in Input.touches) {
			if (toque.phase != TouchPhase.Ended && toque.phase != TouchPhase.Canceled)
				numPresiones++;
		}
		if (numPresiones > 0 | Input.GetMouseButtonDown (0)) {
			//Vector3 posicionTap = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
			Vector3 posicionTap = Camera.main.ScreenToWorldPoint (Input.mousePosition);
			Vector2 posicionTap2D = new Vector2 (posicionTap.x, posicionTap.y);
			bool presiono = presionar.OverlapPoint (posicionTap2D);
			if (presiono) {
				personaje = this.transform.parent.gameObject.GetComponent<PersonajeScript> ();
				personaje.MoverJugadorIzquierda ();
			}
		}
	}
}

JugadorScript

using UnityEngine;
using System.Collections;
public class JugadorScript : MonoBehaviour {
	public float velocidad = -10f;
	// Use this for initialization
	void Start () {
	}
	// Update is called once per frame
	void Update () {
	}
	public void moverIzquierda(){
		transform.Translate (Vector2.right * velocidad * Time.deltaTime);
		transform.eulerAngles = new Vector2 (0, 0);
	}
	public void moverDerecha(){
		transform.Translate (Vector2.right * velocidad * Time.deltaTime);
		transform.eulerAngles = new Vector2 (0, 180);
	}
}

Suerte!


Nuevo Juego hecho con Unity 2D! Dribleen a tantos rivales como les sea posible en este, mi último juego sobre la Super Soccer Eurocopa Francia 2016, super original donde tendrás que usar ambos hemisferios de tu cerebro para ganar.
AdPeque
 

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

[…] Web donde encontrarán el proyecto para importar y el código usado en el video: Tutorial de Unity 2D (Ver 4.3) – Un juego básico de plataforma para Android I […]

[…] Web donde encontrarán el proyecto para importar y el código usado en el video: Tutorial de Unity 2D (Ver 4.3) – Un juego básico de plataforma para Android I […]

Joaquin

Hola muy buen tutorial se agradece, sabes presento el siguiente problema en el codigo:
NullReferenceException: Object reference not set to an instance of an object
botonIzqScript.tocandoPantalla () (at Assets/Scripts/botonIzqScript.cs:28)
botonIzqScript.Update () (at Assets/Scripts/botonIzqScript.cs:16)
estube haciendo un debug, y el numPresiones me marca en 0, y entra al siguiente if el cual tiene como condicion que este debe ser mayor a 0 y es en el vector donde me marca la referencia null, podrias ayudarme.

gpe

Assets/Scripts/botonDerScript.cs(11,17): error CS0029: Cannot implicitly convert type `UnityEngine.CircleCollider2D[]’ to `UnityEngine.CircleCollider2D’
me aparece este error

sebastian

y el codigo de boton arriba

Santiago Davalos

Hola Julio Cesar no puedo bajarme el paquete para este juego me puedes ayudar con eso.
Gracias

Wolf Mtx

olvidalo hermano :V me falto [] en el private ^_^ aun asi gracias

Wolf Mtx

Oye hermano por que me aparece este error
Assets/Images/PersonajeScript.cs(17,17): error CS1579: foreach statement cannot operate on variables of type `PersonajeMovimiento’ because it does not contain a definition for `GetEnumerator’ or is not accessible
no logro entenderlo espero tu respuesta

Arthur Brian

Amigo que pena se que mi pregunta no va a esta parte del tutorial pero tu usas algun plugin de admob para interstitial ??? me seria de mucha gran ayuda, es que yo encontre uno pero solo muestra el interstitial una vez y yo quiero que lo meustre cada vez que se recargue la scena ( que seria al morir) Muchas gracias.

adridenia

sube tambien el boton de flecha arriba

HERI

Hola julio.
Yo acabo de entrar en un curso onliné de Java Script, con esos conocimientos podre programar juegos en Unity 3D o necesito mas conocimientos de programación, no e usado el programa unity, quiero terminar primero el curso que me parece muy facíl y después usar Unity con video tutoriales como los tuyos para programar juegos para ANDROID.