Muy bien explicado Dami! Conocer las Coroutines es un antes y un después! 😍
@oscarquintero85112 жыл бұрын
Muy bien explicado, todo muy claro, mostrar las diferentes maneras de hacer algo y llevarnos a la mejor opción o practica, gracias por compartir!!
@miguelvaras10294 жыл бұрын
Man sos todo un crack, la verdad se necesitan profesores como vos en las facultades! sos un genio total!
@syajuegos4304 жыл бұрын
Aguante el instantiate() !! XD ... Hablando en serio, de lo mejor tus explicaciones..abris la mente y sin duda ayudas a administrar de manera mas eficiente nuestros codigos...sin duda uno de los mejores explicando (sino el mejor) de arg !...abrazooo y grax por estooo
@joseoleaga4 жыл бұрын
Eres el mejor amigo, me encanta tu personalidad y enseñas increíble, es fácil aprender contigo gracias💁🏻♂️✌️✌️🙏🙏🙏
@hasaellopez49543 жыл бұрын
ERES UN MAESTRO! Muchas gracias por el conocimiento
@AlexGLMusic4 жыл бұрын
Conocía las Corutinas pero siempre busqué una manera alternativa para no depender de ellas. Muchas gracias por la explicación en este y en tus otros vídeos!
@homestudio60844 жыл бұрын
Eres increible y único en tu forma de explicar. Gracias!
@pekediablo1503 жыл бұрын
La última forma de programarlo me ha fascinado
@dr.freemanaperture1668 Жыл бұрын
Muchas gracias. 👍👍👍
@HHungriaP4 жыл бұрын
Realmente como maestro Eres un Crack, nadie explica mejor que tu. En cuanto a las 2 altenativas que nos enseñas, ya son muy buenas como opciones para probar pero no creo que tengan mejor performance que las tipicas courroutinas. Saludos desde Carolina del Sur, USA.
@lauramereles10214 жыл бұрын
Impecable trabajo. Me encanta! Me estaba rompiendo la cabeza para hacer un pausa y detener y reanudar corroutinas pero ahora veo que son innecesarias
@bot-m91673 жыл бұрын
wowwww muchas gracias justo lo que necesitaba y bien explicado :)
@resenasrock41473 жыл бұрын
Gracias, estoy haciendo un juego de peleas por turnos y esto me viene re bien
@eduardoblancarte78463 жыл бұрын
Muchísimas gracias, primer video tuyo que veo y me encanto, me ayudaste a resolver un problema que tenia con las curritinas en donde una vez que se ejecutaba la línea de WaitForSeconds ya no hacia nada. Me suscribo a tu canal para aprender más con tu contenido. Saludos
@davidecheverry05174 жыл бұрын
el video que no sabia que necesitaba
@sergiotalegon4514 Жыл бұрын
Genial!!! Muchas gracias
@gameroche3 жыл бұрын
Excelente video gracias
@demongbari453 жыл бұрын
me encanto este tutorial!
@3dclass3062 жыл бұрын
Eres un máquina, muchas gracias por la ayuda!!!! nuevo sub!!!!!!!
@Brunales582 жыл бұрын
Buenas, tengo una pregunta. Al recoger una moneda quiero que haga el sonido de recoger la moneda y luego que el objeto moneda de destruya, el problema es que tengo que esperar los milisegundos que dura el sonido para destruir el objeto moneda porque sino se escucha un chasquido nada más. A todo esto lo estoy haciendo con corrutinas, si me pueden ayudar se lo agradecería. Gracias
4 жыл бұрын
Tenía mis reservas con no utilizar corrutinas pero la verdad es que me ha gustado la idea de crear tu propio administrador de tareas.
@damiangonzalez_esp4 жыл бұрын
a mí me encanta, a la hora de necesitarlo escribo una sola línea y listo :)
@MiguelAngelVsd3 жыл бұрын
@@damiangonzalez_esp hola amigo y en js como seria, porque lo que yo quiero es hacer que la musica de fondo se baje de poco en poco cuando termine mi escena, y me dijero que se hacia con corrutinas pero en cs , yo quisiera saber como seria en js, porque la scrip la tengo asi, gracias
@gameroche3 жыл бұрын
La inteligencia es hacer las cosas simples mucho mejor esta opciòn gracias
@axelderosa44553 жыл бұрын
EXCELENTE VIDEO!
@shayrmitz92034 жыл бұрын
Muy bien explicado, gracias!!!
@nyuronjavigor4 жыл бұрын
Muy buenas DGonzalez. Me preguntaba si tienes intención de publicar la parte 3 del tutorial de las cuerdas, para aprender a hacer que suba y baje por ella.
@FarwalDev3 жыл бұрын
Que buena explicación, ahora veo las corrutinas de otra manera :3
@thewarriorgames63054 жыл бұрын
Muy duro este tutorial y el es muy bueno haciendo esto de videosjuegos 100 por siento recomendado
@fernandocordoba75324 жыл бұрын
Excelente tu manera de explicar! Te quisiera consultar qué ventajas y desventajas tiene usar Invoke de una función para hacer algo como esto?
@damiangonzalez_esp4 жыл бұрын
Hola, Fernando. Sinceramente no sabía que Invoke permitía un delay, muchas gracias por el dato. Investigando un poco, veo que ambas se pueden cancelar, ambas se pueden almacenar en variables. Los Invoke con delay parece que son una versión simplificada de las corrutinas, y para esto podrías usar cualquiera de las dos, pero encontré estas diferencias en algunos foros: Pros de Invoke: - código más breve y claro Contras de Invoke: - no se le pueden pasar argumentos, a las corrutinas sí - Las corrutinas además se pueden usar para otras esperas asincrónicas, como esperar un dato de la web, o cualquier otra cosa. En ese "yield return" se le pueden poner condiciones propias, no solo que espere - Parece que son más "performantes", no sé. El propio manual de Unity sobre Invoke dice: "For better performance and maintability, use Coroutines instead."
@Jettelly4 жыл бұрын
Esta buenisimo Damian !! Un abrazo mate :D
@doombruh47753 жыл бұрын
Hola me gusto mucho la forma en la que explicas, no das clases particulares?
@alaslarios4 жыл бұрын
Excelente explicación, muchas gracias por tu ayuda.
@roswuelramirez31693 жыл бұрын
esto podria meterlo solo para rellenar el tiempo necesario para el reset trigger de mi ataque cierto?
@cristiandomicevics81674 жыл бұрын
ya extrañaba estos videos! :)
@Milcross_set4 жыл бұрын
Que bueno esta, podrias explicar de esa misma manera el uso de los IJobs
@soran22904 жыл бұрын
Creo que se podría usar programación reactiva en c# con la librería RX
@herunnaegamer4 жыл бұрын
Impresionante 👌🏻 Gracias!
@DiauloXD Жыл бұрын
Me gustó mucho tu implementación de un gestor de tareas, pero quede con una duda, desde mi ignorancia, no seria muy costoso tener un loop dentro del update?
@puerkismevanjohnson25293 жыл бұрын
Eres un ídolo!
@tremerin73232 жыл бұрын
Que buen video!
@El_Pupita4 жыл бұрын
Cuando arrancan los tutos del FPS multiplayer geniooo
@esrivera22284 жыл бұрын
Excelente video y forma de explicar :D
@mejotor Жыл бұрын
hay algo como eso, pero que mientras hago la corrutina, el update se detenga mientras hago la corrutina?
@Leito4Gaming Жыл бұрын
Algo está fallando en mi programa y no se que. Hice una corutina re simple, para que cambie de color al ser golpeado en el OnCollisionEnter2D. Sin embargo al ejecutar el yield return New WaitForSeconds la ejecución termina y nunca se ejecuta el codigo de abajo. Por que puede ser? public IEnumerator HitEffect(SpriteRenderer _renderer) { if (_renderer != null) { _renderer.color = Color.red; yield return new WaitForSeconds(0.1f); _renderer.color = Color.white; } else Debug.LogError("Hay un null en el HitEffect"); } El enemigo me queda en color rojo y nunca vuelve al color normal. No entiendo por que :/
@damiangonzalez_esp Жыл бұрын
Hola! Las corrutinas no pueden tener parámetros. Intenta llamarla sin parámetros y ese renderer obtenerlo de otra manera. Por ejemplo, en una variable general, por fuera.
@Leito4Gaming Жыл бұрын
Bueno resolví el problema pero creando la corutina en otra clase. Es raro, yo lo había armado en la clase del Arma, traia el SpriteRenderer del objeto con el que se colisionaba y lo modificaba desde ahí. Pero eso detenía la corutina al momento de hacer el yield return y nunca seguia ejecutando. Para resolverlo, fui al script del HealthManager y armé la corutina ahí y parece funcionar correctamente.
@Leito4Gaming Жыл бұрын
@@damiangonzalez_esp ahh no sabia eso. Lo terminé solucionando cambiándola a otro script! Muchas gracias por responder! 😁
@TheErudito Жыл бұрын
Una pregunta se puede usar Task.Deley(200) en vez de corrutina o no
@luisoctavio73674 жыл бұрын
Excelente !!!! Sigue esforzandote
@contrl_f54992 жыл бұрын
¿se puede hacer una corrutina en el update?
@BrickTechnicCreations4 жыл бұрын
Demian buenos días, un problema que no he podido resolver, como creo un efecto de lluvia que sea afectado por un "área efector 2Dd" para crear la sensación de viento en la lluvia?
@envoladedeporte3 жыл бұрын
buena bro, excelente tutorial!!! suscrito inmediatamente Una duda si: Intenté hacer la corrutina secuencial para que un personaje se mueva lento y luego de 3 segundos lo haga rápido MoveSlow(); yield return new WaitForSeconds(3); MoveFast(); esa corrutina la llamo en el FixedUpdate pero no me resulta, no hace lo que quiero. Qué podrá ser?
@turi74913 жыл бұрын
Sirve para hacer un sistema de Dialogo¿?
@aciem3 жыл бұрын
para acabar de redondear "gral" tendría que ser un singleton, no tiene mucho sentido que haya más de una instancia si solo hay una "static tareas" no?
@absolen24834 жыл бұрын
me encantaria un video sobre sistema de dialogos, ya que he intentado hacerlo varias veces y no lo logro, aunque intentare tu metodo de corrutinas para ver si esta vez si funciona.
@damiangonzalez_esp3 жыл бұрын
Hola! Sí, lo voy a hacer pronto. Pero te aconsejo que no uses corrutinas para eso. Las corrutinas están programadas para un momento específico. En cambio los diálogos deberían ser interactivos, es decir, que el jugador elija cuándo viene la siguiente línea.
@santiagomurillorendon55143 жыл бұрын
Excelente
@JemyCS3 жыл бұрын
Como haría para que la acción de una corrutina se repitiera una y otra vez pero aún esperando los segundos?
@joseordonez20794 жыл бұрын
¡Hola! eres el mejor hermano! se que es mucho pedir pero podrías hacer un vídeo tratando de recrear la física del videojuego tony hawk pro skater en Unity, solo el movimiento y los saltos que hace en los Quarter pipe. lo intenté durante mucho tiempo y no lo consigo. ¡Gracias!
@chuvaca6294 жыл бұрын
Buen video Bro Te quería preguntar algo Estoy haciendo un TPS pero quiero agregar un personaje que se pueda mover, pensé en una figura de lego (ya que desde niño me han gustado) entonces fui a la página de Mecabricks para hacer la figura y luego exportarla y poner el modelo en Unity pero no tengo noción de cómo animar mi lego en Unity Podrías hacer un tutorial de eso?
@leatherandpoemscharmyman57744 жыл бұрын
tengo entendido que si no se las sabe usar muy bien o hay un uso despreocupado de usarlas , es conveniente no usarlas, si no se sabe optimizar bien un juego, aunque para prototipos rapidos de juegos simples sirve bastante. yo por ejemplo las uso con interfaces genericas para crear variaciones en algun comportamiento o algo. Tambien hay uqe saberlas frenar ,detener porque no hay o opr lo menos nose si se pueden controlar de forma tranquila, es como que te auto-presiona usarlas. pero son efectivas y eso de "yield return " podes poner muchos dentro de una misma corrutina aunqeue yo opto por usarlo 1 vez , pero es un etma que parece sencillo pero tiene un transfondo un poco delicado.
@renidea95232 жыл бұрын
jajaja, me dio mucha gracia ver la cara de jolgorio al ver su código funcionar jajaja
@juanjoseardilagarzon2977 Жыл бұрын
Hermoso
@lisandroaros92924 жыл бұрын
Esta buenísima la técnica, pero que pasa cuando queres hacer ejecuciones cíclicas? En la corroutina metias un while(true) y se ejecutaba todo el tiempo. Como se podria hacer con tu metodo?
@Nachoug3 жыл бұрын
gracias
@ranelr55492 жыл бұрын
Interesante es desde luego, pero no termino de verle la utilidad si quieres usarlo como verdadera sustitucion de las corrutinas. Para emular el yiel return por ejemplo, tendrias que tener un metodo para cada seccion de codigo, y unificarlo todo dentro de otro metodo. Si aceptas y abrazas el yiel return, lo tienes todo en el mismo sitio, sin codigo separado. Me parece mas limpio usar corrutinas. Y si encima no suponen mas carga computacional de forma notable, pues menos todavia. Desde esto obviamente se puede hacer un gestor de tareas mucho mas complejo, y entonces a lo mejor si que es mejor, pero no termino de verle la utilidad a escapar de las corrutinas.
@ivanmastrandrea54824 жыл бұрын
Buenas soy de Mendoza y estoy desarrollando un videojuego, queria contactarte de forma directa como puedo hacer?
@damiangonzalez_esp4 жыл бұрын
Hola! Acá tenés mis datos: www.pipasjourney.com/damianGonzalez/#contact
@SAandT2 жыл бұрын
Excelente, muy bien explicado, rengo un problema, espero y me puedas poner en el camino correcto, tengo tres paneles PANEL A (PANEL LOADING) PANEL B, la idea es que quiero que del panel A al panel B, se muestre entre medio el panel loading, el panel b, muestra un listado de prefabs que se tarda un poco en renderizarlos porque hace varias operaciones, el chiste es que cuando, cambio del panel a al panel b, le hago un setactive al panel loadign, pero no se muestra hasta que se termina de cargar los prefabas del panel b, lo cual no es la idea, no se si me explique, para esto estoy usando una corrutina, pero no logor hacer que se muestre primero el panel loading antes de mostrar el panel b, espero y me pueadas ayudar.
@sebastianflores22304 жыл бұрын
Amigo no tienes un correo o Instagram para poder contactarte??, muy buen vidio crack
@damiangonzalez_esp4 жыл бұрын
Hola! Sí, en mi canal, en la pestaña "acerca de" está mi mail.
@Lucilodc3 жыл бұрын
maestro !
@MaximilianoDavidDucoli3 жыл бұрын
Hola!!!!! Grandes tutoriales explicados como nadie lo hace!!!!! Gracias!!!!! Che, necesito que me aclares una duda porque no supe como resolverla. Tengo un personaje (que sería un zombie) que camina hacia un WayPoint y al llegar a ese WayPoint, quiero que gire sobre su eje (calculé que era un rotation) y al girar 180º, vuelva caminando hacia otro WayPoint y que al llegar a este vuelva a girar y así entre WayPoint y WayPoint. No supe hacerlo. Voy hacia uno, giro y giro y giro etc etc. Me ayudás??? Le puse un transform de variable, que sería el WayPoint1 y al llegar a ese, se detenga, gire 180º Transform.Rotate(0,180 * speed * Time.DetaTime,0); Y que vaya al otro WayPoint y al llegar vuelva a girar, pero ahora para el otro lado. Cómo puede se la rutina? Me das una mano? Gracias!!!!!
@eithansamuelmorenomunoz8b6363 жыл бұрын
yo hago una variable float x a 0 y cuando se inicia le pongo mas time.deltatime y si x > valor de segundos a esperar ejecutar algo public float tiempo; public float TiempoAEsperar = xf; void Update() { if(algo){ tiempoAEsperar += Time.deltatime; if(tiempo > TiempoAEsperar){ //hacer algo } } }
@KaedyStudio4 жыл бұрын
muy bueno genio !
@edwinmacias70384 жыл бұрын
Muchas gracias bro! solo tengo 2 preguntas, primera, como podria detener una corrutina que tiene parametros? intente con stopCoroutine, pero no se detuvo, lei que es porque ese tipo de corrutinas no se pueden detener (he ahi la razon por la que llegue aca), y segundo, tu metodo esta brutal, pero en cuestiones de rendimiento que tan optimo es comparado a la corrutina?
@alulim49683 жыл бұрын
No sé si después de un año resolviste tu problema. Pero sí que se puede detener una corrutina específica SÓLO si esa corrutina es una variable: private Coroutine co; void LlamarCorrutina() { co = StartCoroutine(Corrutina()) } Así la corrutina no está "al aire" sino que la variable referencia la corrutina específica. De modo que la puedes detener: if (co != null) StopCoroutine(co);
@UniversoUltra4 жыл бұрын
¡GENIAL! ¿Pero y el del videojuego multijugador? :( LO ESPERO CON ANSIAAAAAS, y tengo una pregunta a ver si lo puedes tomar en cuenta, ¿El juego multijugador que creaste podría ser Cross Platform? Es decir, jugar en línea y que un jugador esté en PC y otro en android, por ejemplo
@UniversoUltra4 жыл бұрын
Por cierto, este tutorial me cae como anillo al dedo, GRANDEEEEE, gracias
@renatogonzalezparanormal93744 жыл бұрын
Amigo cuando haras un tutorial donde un haz de luz parpadee
@damiangonzalez_esp4 жыл бұрын
Podrías usar esto que enseño acá; podrías hacer una corutina que se llame Parpadeo, que haga 5 cosas: 1) apaga la luz ahora 2) espere un breve tiempo (.1f, por ejemplo) 3) prenda la luz 4) espere un tiempo más largo (podría ser al azar) 5) se llame a sí misma para que lo haga en loop
@appnexx12633 жыл бұрын
✌
@cristiandavidalexanderarch13603 жыл бұрын
No entiendo nada :v pero me gusta como te expresas. Creo que mejor voy a usar Playmaker
@Tuligarnio2 жыл бұрын
Yo añadiría otro método extra de Nueva() (llamado por ejemplo NuevaRelativa()), que en lugar de indicarle un tiempo "absoluto" el tiempo añadido fuese respecto a la anterior tarea, así a la hora de añadir tareas como encender luces y explotar, mostradas en el vídeo, podrías simplemente indicar el tiempo que quieres que pase después de la última tarea para que esta se ejecute. NuevaRelativa(float tiempo, Action acción) { var ultimaTarea = listaTareas.Get(listaTareas.Count - 1); listaTareas.Add ( new tarea { momInicio = ultimaTarea.momInicio + tiempo, acción = acción } ); } Y quedaría así en el ejemplo del vídeo: tareas.NuevaRelativa(1f, FlashLuz); tareas.NuevaRelativa(1f, FlashLuz); tareas.NuevaRelativa(1f, FlashLuz); tareas.NuevaRelativa(1f, Explota); Lo comento por si alguien piensa que puede serle útil poder hacerlo así. Aunque claramente según el caso te interesará más usar tiempos absolutos o relativos.
@ilianostapovich4378 Жыл бұрын
El único problema de esto, es que si por alguna razón tenes varios scripts que agregan tareas, pueden superponerse en medio, y crear una tarea relativa a otra q no tiene nada q ver, creo
@Tuligarnio Жыл бұрын
@@ilianostapovich4378 Eso depende de cómo lo organices, yo en este caso hablo de que habría una única parte del código que sería la que genera un tipo de tareas (por ejemplo un cubo que va realizando acciones de moverse a un lado u otro, y rotar). Y me parece interesante poder decir cuanto tiempo tiene que tardar en ejecutarse una tarea después de otra, al menos a mí me parece más cómodo que trabajar siempre con tiempos absolutos. Y volviendo al ejemplo del cubo, en vez de uno podrías tener varios, que podría estar haciendo los mismos movimientos pero con un desfase, y programarlo con tiempos relativos se hace bastante cómodo
@ilianostapovich4378 Жыл бұрын
@@Tuligarnio entiendo el sistema, obviamente me parece mas cómodo si, pero bueno se me ocurrió ese posible problema
@braveitor4 жыл бұрын
Qué "cosilla" me da ver métodos y variables en castellano con acentos... De mi época de Flash que se corrompían los archivos cuando había tildes... ufff
@damiangonzalez_esp4 жыл бұрын
jaja! Sí, yo también siento una mini oleada de adrenalina cada vez que escribo una variable con tilde (yo empecé con el lenguaje Basic, que no admitía variables con tildes ni muy largas) pero me tranquiliza saber que lo interpreta y compila él mismo, y funciona. Ya le perdí el miedo, y aún así da como un cosquilleo 😁
@dota2adsc6533 жыл бұрын
El problema es que si son un millon de tareas, algunas se te van a atrasar.
@quemadordecanciones.85863 жыл бұрын
Men te complicas demasiado, yo hago lo mismo que vos y reconozco que es mejor usar corrutinas.