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.
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.
[…] 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 […]
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.
Fíjate que tengas esta línea de código no comentada Vector3 posicionTap = Camera.main.ScreenToWorldPoint (Input.mousePosition); si tienes la otra estás intentando traer la posicion del toque y me imagino que estas en el unity editor y no hay toques, hay clics del mouse
Assets/Scripts/botonDerScript.cs(11,17): error CS0029: Cannot implicitly convert type `UnityEngine.CircleCollider2D[]’ to `UnityEngine.CircleCollider2D’
me aparece este error
CircleCollider2D[], tiene esos corchetes que no van con el código, revisa la que está en la pg web y verás, lo que estás haciendo es crear un array de circle colliders
y el codigo de boton arriba
En el siguiente video http://singletechgames.com/2014/03/06/tutorial-unity-2d-4-3-juego-plataforma-android-ii/
Hola Julio Cesar no puedo bajarme el paquete para este juego me puedes ayudar con eso.
Gracias
Cual es el problema?
olvidalo hermano :V me falto [] en el private ^_^ aun asi gracias
o.O! ok 🙂
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
🙂
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.
Hola Arthur, todavía no he implementado ningun plugin de Admob o cualquier otro de Ads, pero ni bien lo haga voy a hacer un video 🙂
sube tambien el boton de flecha arriba
Hola, el boton de flecha arriba es solo rotar en 90 grados el eje Z del boton que he puesto 🙂
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.
Yo uso c# que es ligeramente mas complicado que javascript, si no sabes programas javascript es buenisimo para iniciar pero las cosas que hago yo requieren un poquito mas de trabajo