Tutorial #8: Juego de Plataforma y Metroidvania en Unity 2D: Movimiento Avanzado de Enemigos

  Рет қаралды 8,146

ClubGamerZone

ClubGamerZone

Күн бұрын

Пікірлер: 132
@alejanddro
@alejanddro 18 күн бұрын
14:33
@emajose5959
@emajose5959 Жыл бұрын
tengo un problema cada que mi player recibe 2 golpes o 3 ya deja de hacerle daño a los enemigos ¿como arreglo esto?
@ClubGamerZone
@ClubGamerZone Жыл бұрын
Veridica si tienes algún Bool que no permita que reciba golpes, o que el trigger siga activo
@tonoh2447
@tonoh2447 3 жыл бұрын
Men te mereces más público, gracias por el tuto
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Gracias Tonoh! Un honor tus palabras :)
@tonoh2447
@tonoh2447 3 жыл бұрын
Me da un error en el minuto 13:30 se muevo muy raro y se se voltea el sprite muy rápido infinita mente
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
configuraste el Ground check? debes verificar que tus checkers estén correctamente configurados, tocando el piso o listos para tocar las paredes, para que eso no te suceda
@tonoh2447
@tonoh2447 3 жыл бұрын
@@ClubGamerZone si, me equivoque en el wall detección porque puse wallcheck
@MrRAOB1
@MrRAOB1 3 жыл бұрын
super buena la modalidad del Enemy que se puede elegir la Accion. justo como pensaba. me ayudaste mucho. Gracias.
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Excelente, me alegra mucho ser de ayuda!
@dark0vius
@dark0vius 11 ай бұрын
Buenas, te go un error en el enemigo tipo patrulla, que al llegar al puntoA cambia la animación a Idle, pero no detiene el movimiento, alguien tiene alguna forma de solucionarlo?
@izanami_funk2631
@izanami_funk2631 Жыл бұрын
alguien sabe como arreglar este error NullReferenceException: Object reference not set to an instance of an object?
@ClubGamerZone
@ClubGamerZone Жыл бұрын
Tienes que darle click al error y te va a mostrar la línea del error, null reference es que estás llamando un objeto que no existe
@rrivillox
@rrivillox 3 жыл бұрын
Hola. Sabes, tengo un problema. Por más que intento darle vuelta al código, no logro que el esqueleto se mueva. Sólo hace la animación de caminar pero no se desplaza. Hasta modifiqué la Box de la plataforma. Ayúdame por favor. :'(
@Swordless_RaXx
@Swordless_RaXx 3 жыл бұрын
Intenta cambiar la velocidad ( Speed ) del esqueleto ponle un valor de entre 10 o 15 a mi tambien me paso lo mismo.
@rrivillox
@rrivillox 3 жыл бұрын
@@Swordless_RaXx Voy y te confirmo. Gracias. :)
@rrivillox
@rrivillox 3 жыл бұрын
@@Swordless_RaXx Listo!!!! Tema solucionado. Gracias por la ayuda. ;)
@Swordless_RaXx
@Swordless_RaXx 3 жыл бұрын
@@rrivillox Excelente 👍🏻, no hay de que, Saludos 😁.
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@Swordless_RaXx Excelente gamers! Qué buena comunidad!
@anime_hero4630
@anime_hero4630 Жыл бұрын
excelente tutorial, me podrias ayudar con un error? o alguna persona, no seria un error en el codigo porque no me marca pero anda perfecto el patrol en el suelo pero cuando lo subo a una plataforma no funciona, sigue de largo y se cae, estan los puntos y todo arriba tambien pero nada
@ClubGamerZone
@ClubGamerZone Жыл бұрын
Verifica el radio de detección y si el objeto está a buena altura (el detector)
@pablomontero644
@pablomontero644 Жыл бұрын
estuve probando muchas cosas y no se por que WallDetected no se activa, y claramente, no gira al chocar con una pared. paso mi codigo: public class EnemyMovement : MonoBehaviour { float Speed; Rigidbody2D rb; public bool WalkRight, isStatic, IsWalker, IsPatrol, ShouldWait, IsWaiting; Animator animator; public Transform WallCheck; public Transform PitCheck; public Transform GroundCheck; public bool pitDetected, wallDetected, groundDetected; public float DetectRadius; public LayerMask WAHtIsGround; public Transform PointA, PointB; public bool GoToA, GoToB; public float TimeToWait; // Start is called before the first frame update void Start() { GoToA = true; rb = GetComponent(); Speed = GetComponent().speed; animator = GetComponent(); } // Update is called once per frame void Update() { pitDetected = !Physics2D.OverlapCircle(PitCheck.position, DetectRadius, WAHtIsGround); wallDetected = Physics2D.OverlapCircle(WallCheck.position, DetectRadius, WAHtIsGround); groundDetected = Physics2D.OverlapCircle(GroundCheck.position, DetectRadius, WAHtIsGround); if ( (pitDetected || wallDetected) && groundDetected) { Flip(); } } private void FixedUpdate() { if (isStatic) { animator.SetBool("Idle", true); rb.constraints = RigidbodyConstraints2D.FreezeAll; } if (IsWalker) { rb.constraints = RigidbodyConstraints2D.FreezeRotation; animator.SetBool("Idle", false); if (!WalkRight) { rb.velocity = new Vector2(-Speed * Time.deltaTime, rb.velocity.y); } else { rb.velocity = new Vector2(Speed * Time.deltaTime, rb.velocity.y); } } else if(IsWalker == false) { animator.SetBool("Idle", true); } if (IsPatrol) { if (GoToA) { if (!IsWaiting) { animator.SetBool("Idle", false); rb.velocity = new Vector2(-Speed * Time.deltaTime, rb.velocity.y); } if(Vector2.Distance(transform.position, PointA.position) < 0.2f) { if (ShouldWait) { StartCoroutine(Waiting()); } Flip(); GoToA = false; GoToB = true; } } } if (GoToB) { if (!IsWaiting) { animator.SetBool("Idle", false); rb.velocity = new Vector2(Speed * Time.deltaTime, rb.velocity.y); } if (Vector2.Distance(transform.position, PointB.position) < 0.2f) { if (ShouldWait) { StartCoroutine(Waiting()); } Flip(); GoToA = true; GoToB = false; } } } IEnumerator Waiting() { animator.SetBool("Idle", true); IsWaiting = true; yield return new WaitForSeconds(TimeToWait); IsWaiting = false; animator.SetBool("Idle", false); } private void Flip() { WalkRight = !WalkRight; transform.localScale *= new Vector2(-1, 1); } }
@pablomontero644
@pablomontero644 Жыл бұрын
al final lo solucione agrgando una nueva layermask llamada WahtIsWall y collocandole una nueva layer llamada wall que puse en las paredes
@dzexionhernandez1575
@dzexionhernandez1575 2 жыл бұрын
Gran video, pero tuve un errorsote y puse la inicializada en el update, dure media hora buscando el error.
@ClubGamerZone
@ClubGamerZone 2 жыл бұрын
Explica que sucedió bro?
@lordorochimaru8415
@lordorochimaru8415 2 жыл бұрын
Me funciona de 10 bro. Una consulta, que además vi que también te sucedió. Cuando golpeas al enemigo qie va patrullando o en movimiento no sale disparado hacia atrás
@tonisantandreu1799
@tonisantandreu1799 3 жыл бұрын
Decir que muy agradecido.Una gran ayuda por su parte
@woravuddungpracha5009
@woravuddungpracha5009 3 жыл бұрын
why i can't push * on the transform.localScale *= new Vector2(-1, transform.localScale.y);
@woravuddungpracha5009
@woravuddungpracha5009 3 жыл бұрын
and my skeleton cant flip because Is that line ?
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@@woravuddungpracha5009 it seems you can't multiply vectors
@RMDannyMUSTANG
@RMDannyMUSTANG 2 жыл бұрын
Cuando va a girar a la hora de multiplicar para girar el sprite la y se multiplica hasta infinito y bugea, alguien sabe como puedo arreglarlo?
@pistache_pirata09
@pistache_pirata09 Жыл бұрын
hay, la verdad he seguido tus tutoriales pero he tenido problemas con las plataformas y no aparecen como las pusiste, puedes mostrar como las hiciste?
@JuanFranco-mq7js
@JuanFranco-mq7js 3 жыл бұрын
gran tutorial bro, completo con algún inconveniente, pero completo, me dio el error que no flipeaban los enemigos, era xq hice su animacion de Idle achicando y alargando el eje Y del enemigo en el animator para dar el efecto como que respira, pasa que investigue basatnte y cuando haces eso no puedes modificar el transform y el Flip() no funcionaba, toco editar a mano sprites, nose si habia otra solucion, pero asi me quedo andando todo, dejo la exp x si a otro le pasa, ya que tuve que averiguarlo en ingles.
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Hola Juam, gracias por tu comentario. De hecho eso me sucedía mucho y por eso decidí no modificar los transform en mis juegos. Si mal no recuerdo, para poder hacer flip después de modificar escalas, lo mejor es multiplicar por -1 el local scale, así se mantendrá con la misma modificada. Así lo hiciste?
@JuanFranco-mq7js
@JuanFranco-mq7js 3 жыл бұрын
@@ClubGamerZone si multiplique X a -1 e Y a 1 xq había reescalado el Y del sprite a 0.65 y pues cada vez la altura se hacía más pequeño, la función del unity FlipX la use al comienzo del proyecto y ya la voy quitando xq no gira los hijos, aún tengo al Player con flipX y el hijo del hitbox de ataque girado manualmente, la próxima vez que le de al proyecto ya lo transformó todo a escalar a -1, también veré tu vídeo de Jump del player xq como lo tengo me da un bug raro que si toco un enemigo mientras está ascendiendo se va muy alto, es raro q pase pero pues pasa.
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@@JuanFranco-mq7js si, es lo raro y bacano de los tutoriales, así uno siga al pie de lanletra algo sucede, ya sea por los sprites o configuraciones, pero a la final uno siempre termina aprendiendo !
@tonisantandreu1799
@tonisantandreu1799 3 жыл бұрын
transform.localScale *= new Vector2(-0.4f, transform.localScale.y); no me deja aplicarlo,esta mal??
@mehmeterenler8011
@mehmeterenler8011 3 жыл бұрын
Hi ty for great tutotial .i want to ask that did u use tilepalet for this scene and whats your pixels per unit if u use tilepalet need 16 pixel per unit and when i change my character pixel 100 to 16 flip functions doesnt work it stays( -1. X)When idle play:(
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Hello, no, this are just sprites platforms aligned side by side. Try adding to you code an else if(RB.velocity.x==0)
@carlosmarin6980
@carlosmarin6980 2 жыл бұрын
Hola intente poner dos collider con Trigger uno para detectar al player y otro que es el que tiene el cuerpo, pero al entrar el player en el primero que es una especie de HotZone se activan los dos... hay alguna forma de que solo entre el HotZone y no me dispare el Trigger de daño del enemigo?
@lilardamerak9136
@lilardamerak9136 3 жыл бұрын
Excelente video, peor tengo un problema, al ir al punto A, acepta la animación pero no deja de caminar. Por favor si pudieran ayudarme.
@JoseCruz-cu3im
@JoseCruz-cu3im 11 ай бұрын
Lo arreglasteis
@MiqRuz
@MiqRuz 3 жыл бұрын
Holaa. Voy a escribir por Discord ya que a partir del Patrol, tengo problemas. Teniendo la misma configuración, no me detecta los puntos A y B... ¡A ver si hay solución, por que es muy frustrante!.
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
hola me pasa lo mismo y no se que hacer
@MiqRuz
@MiqRuz 3 жыл бұрын
@@cristiancarrazana3131 ya lo solucioné, en cuanto encienda el PC lo miro y te digo que hice.
@MiqRuz
@MiqRuz 3 жыл бұрын
@@cristiancarrazana3131 Le pasó a otra persona y no logré descubrir el motivo. Pero al parecer dentro de if(goToB) y if(goToA) no reconoce el Vector2 que hay dentro de otro if(). Así que sustituye ese Vector por: if ((transform.position.x-puntoA.position.x)< 0.2f) y por: if ((transform.position.x-puntoB.position.x)< 0.2f) en sus respectivos sitios.
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
@@MiqRuz gracias pero disculpa vi el gotoA Y GO TOB Y se donde o como if (Vector2.Distance(transform.position.x - pointA.position.x) < 0.2f) no se como
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
@@MiqRuz hola gracias por tu ayuda pero no supe. Llevo un año tratando de aprender e comprado montan de cursos y tiene una forma de enseñar diferente yo soy persistente pero creo que no sirvo para esto.
@joanjimenez6359
@joanjimenez6359 3 жыл бұрын
bro, porque no me detecta el punta y punto b, comprobe dos veces el video y veo que tengo todo bien, que debo hacer?
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Mmm a ver, pega tu código acá. Pero antes revisa que la posición Z esté en 0
@joanjimenez6359
@joanjimenez6359 3 жыл бұрын
@@ClubGamerZone Rigidbody2D rg2d; Animator anim; public float speed; public float detectionRadius; public Transform pitCheck; public Transform wallCheck; public Transform groundCheck; public Transform PointA; public Transform PointB; private bool walldetected; private bool pitdetected; private bool isGround; public bool isPatrol; public bool isStatic; public bool isWalker; public bool walksRight; private bool goToA; private bool goToB; public LayerMask whatIsGround; // Start is called before the first frame update void Start() { goToB = true; rg2d = GetComponent(); anim = GetComponent(); speed = GetComponent().speed; } // Update is called once per frame void Update() { pitdetected = !Physics2D.OverlapCircle(pitCheck.position, detectionRadius, whatIsGround); walldetected = Physics2D.OverlapCircle(wallCheck.position, detectionRadius, whatIsGround); isGround = Physics2D.OverlapCircle(groundCheck.position, detectionRadius, whatIsGround); if ((pitdetected || walldetected) && isGround) { Flip(); } } private void FixedUpdate() { if (isStatic) { anim.SetBool("idle", true); rg2d.constraints = RigidbodyConstraints2D.FreezeAll; } if (isWalker) { rg2d.constraints = RigidbodyConstraints2D.FreezeRotation; anim.SetBool("idle", false); if (!walksRight) { rg2d.velocity = new Vector2(speed * Time.deltaTime, rg2d.velocity.y); } else { rg2d.velocity = new Vector2(-speed * Time.deltaTime, rg2d.velocity.y); } } if (isPatrol) { anim.SetBool("idle", false); if (goToB) { rg2d.velocity = new Vector2(speed * Time.deltaTime, rg2d.velocity.y); if (Vector2.Distance(transform.position, PointB.position) < 0.2f) { goToB = false; goToA = true; } } if (goToA) { rg2d.velocity = new Vector2(-speed * Time.deltaTime, rg2d.velocity.y); if (Vector2.Distance(transform.position, PointA.position) < 0.2f) { goToB = true; goToA = false; } } } } private void Flip() { walksRight = !walksRight; transform.localScale *= new Vector2(-1, transform.localScale.y); } primero puse positivo a la goToB porque el personaje esta mirando al lado derecho
@joanjimenez6359
@joanjimenez6359 3 жыл бұрын
@@ClubGamerZone bro porfa, ya copie exactamente el codigo y aun sigue sin detectar el pointA y pointB
@joanjimenez6359
@joanjimenez6359 3 жыл бұрын
@@ClubGamerZone Rigidbody2D rg2d; Animator anim; public float detectionRadius; float speed; public Transform pitCheck; public Transform wallCheck; public Transform groundCheck; public Transform pointA; public Transform pointB; public bool isStatic; public bool isWalker; public bool walkRight; public bool isPatrol; private bool walldetected; private bool pitdetected; private bool isGrounded; private bool goToA; private bool goToB; public LayerMask whatIsGrounded; // Start is called before the first frame update void Start() { goToA = true; rg2d = GetComponent(); anim = GetComponent(); speed = GetComponent().speed; } private void Update() { pitdetected = !Physics2D.OverlapCircle(pitCheck.position, detectionRadius, whatIsGrounded); walldetected = Physics2D.OverlapCircle(wallCheck.position, detectionRadius, whatIsGrounded); isGrounded = Physics2D.OverlapCircle(groundCheck.position, detectionRadius, whatIsGrounded); if ((pitdetected || walldetected) && isGrounded) { Flip(); } } // Update is called once per frame void FixedUpdate() { if (isStatic) { anim.SetBool("idle", true); rg2d.constraints = RigidbodyConstraints2D.FreezeAll; } if (isWalker) { rg2d.constraints = RigidbodyConstraints2D.FreezeRotation; anim.SetBool("idle", false); if (!walkRight) { rg2d.velocity = new Vector2(-speed * Time.deltaTime, rg2d.velocity.y); } else { rg2d.velocity = new Vector2(speed * Time.deltaTime, rg2d.velocity.y); } } if (isPatrol) { anim.SetBool("idle", false); if (goToA) { rg2d.velocity = new Vector2(-speed * Time.deltaTime, rg2d.velocity.y); if (Vector2.Distance(transform.position, pointA.position) < 0.2f) { goToA = false; goToB = true; } } if (goToB) { rg2d.velocity = new Vector2(speed * Time.deltaTime, rg2d.velocity.y); if (Vector2.Distance(transform.position, pointB.position) < 0.2f) { goToA = true; goToB = false; } } } } private void Flip() { walkRight = !walkRight; transform.localScale *= new Vector2(-1, transform.localScale.y); } }
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@@joanjimenez6359 HolaJoan, veo el codigo bn, tendría que rvisar el resto, podrías ingresar al discord?
@vicerix
@vicerix 3 жыл бұрын
Muy buenis tutoriales bro, pero recuerda dejar los assets!!!!!, yo igual estoy usando el monje, pero en esta parte me complique buscando algo para el knife, saludos y porfa sigue con los videos
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Hola Juan, gracias por el comentario y lo tendré en cuenta
@cesarkimura2024
@cesarkimura2024 3 жыл бұрын
Tengo el mismo problema en "isPatrol", unity no reconoce el parámetro anim.SetBool("Idle",true);. el sprite se queda en el punto a o b con el sprite en walk, a que se debe éste problema, primera vez q me ocurre esto y no encuentro respuesta en la web, gracias por su tiempo. p.d. le he puesto debug por todas partes el programa se ejecuta en la secuencia correcta pero NO reconoce el parámetro Idle....
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Si el problema es el reconocimiento del parámetro idle, pregunto... si esta creado el bool idle? Podrías revisar eso?mira que no haya espacios en las palabras
@cesarkimura2024
@cesarkimura2024 3 жыл бұрын
@@ClubGamerZone El problema estaba al llamar a la coroutine se debe usar comillas "", StartCoroutine("Waiting"); y NO StartCoroutine(Waiting()); lo raro es que no daba error solo no hacia la animación, otra cosa hay q poner el contraints para q el sprite se detenga y para q camine.....
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
hola ayuda el death efect me sale arriba de los enemigos la idea es que desde abajo del enemigo ayuda por favor gracias
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
mmm me muestras elcodigo del respawn?
@tonisantandreu1799
@tonisantandreu1799 3 жыл бұрын
dice los operandos *= no se pueden aplicar a los Vector2 y Vector3
@dieguezd91
@dieguezd91 2 жыл бұрын
hola, la verdad el codigo me quedo genial, pero no hay forma de que mis enemigos detecten las caidas, pasan de largo siempre le ponga lo que le ponga, alguna posible solucion?
@jesusantoniogarciafusi4052
@jesusantoniogarciafusi4052 3 жыл бұрын
Hola, buenos dias. Primero que nada buen video, se agradece el trabajo que estas haciendo. Mira tengo un problema al hacer que el personaje vaya del punto A al B, no puedo hacer que de la vuelta. Ya cambie los vector 2 de los if a If((transform.position.x-PuntoA.position.x) < 0.2f) y se retiene en el punto A, no puedo hacer que gire. Me podrias ayudar?
@justdannii
@justdannii 2 жыл бұрын
Oye, pudiste resolver el problema? A mi me pasa igual :/
@goranblazevich1802
@goranblazevich1802 3 жыл бұрын
Antes que nada felicitarte por los tutoriales, son increíbles y todo muy bien explicado! Estoy teniendo un problema que el enemigo cuándo defino los puntos A y B y tildo el "isPatrol" queda estático con la animación de caminar. Revise varias veces el código y no veo nada distinto a lo que hiciste. Que puedo hacer?
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Muchas gracias Goran! Solo por descarte, podrías ponerlo isWalker a ver si anda?
@goranblazevich1802
@goranblazevich1802 3 жыл бұрын
@@ClubGamerZone En isWalker camina perfectamente, detectando cuándo tiene una pared delante o cuándo termina la plataforma y rota perfectamente, eso funciona todo correcto. También cuándo pongo isStatic se queda quieto y con la animación de Idle. El problema es solamente cuándo quiero poner que patrulle, por eso me parece extraño.
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@@goranblazevich1802 mmm lo que haría sería revisar que los puntos a y B tengan los Z en cero, luego cuando el personaje se quede estático caminando, tomaría el punto A o B y los movería manualmente a la posición del esqueleto a ver si cambia la cosa, quizá no esté detectando los puntos por algo de la distancia
@goranblazevich1802
@goranblazevich1802 3 жыл бұрын
@@ClubGamerZone Puse ambos en 0 y de igual manera no camina. Cuándo muevo los puntos y hago que colisionen con el enemigo este sí responde a lo programado, gira y espera en idle. La única solución temporal que encontré fue cambiar los "rb.velocity = new Vector2(speed * Time.deltaTime, rb.velocity.y);" por "rb.velocity = new Vector2(speed / Time.deltaTime, rb.velocity.y);" Pero ahora flipea erróneamente. Al menos camina, me sirve jaja
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
@@goranblazevich1802 llegate al discord, allá entre todos solucionamos
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
hola disculpa que te moleste es por tu buena voluntad ayuda no se por que se me activan antes los muros y no se ven estoy en el video 14 donde esta el jefe
@funfactory001
@funfactory001 3 жыл бұрын
hola es excelente lo que has hecho complementa muchas de las cosas que he visto pero tengo una duda que espero puedas ayudarme, cuando pongo al enemigo para que vaya de punto a hacia b sigue caminando y se queda intentado ponerse en idle pero no espera y sigue su camino espero puedas ayudarme de antemano gracias
@lilardamerak9136
@lilardamerak9136 3 жыл бұрын
Tengo el mismo problema, lograste solucionarlo?
@funfactory001
@funfactory001 3 жыл бұрын
@@lilardamerak9136 checa las colisiones de los colliders luego pasa que por fracciones el colliders no checa bien el ground tambien el collider del cuerpo del enemigo estaba por muy poco de ancho lo cual el trigger no lo detectaba y creo que tambien era de algo de animator de discrete a continuos checa si te funciona y me dices
@lilardamerak9136
@lilardamerak9136 3 жыл бұрын
@@funfactory001 hola bro, ya revisé colliders, y las animaciones; y están bien :S crees que me puedas ayudar más a fondo?
@funfactory001
@funfactory001 3 жыл бұрын
@@lilardamerak9136 claro podras mandarme un video sencillo y pasarme el link para verlo
@lilardamerak9136
@lilardamerak9136 3 жыл бұрын
@@funfactory001 claro! Igualmente si tienes discord o algún medio de mensajería igual podría por ahí pero si es más fácil, puedo subir un video.
@bausan9992
@bausan9992 3 жыл бұрын
Puedes ayudarme, ya hice el código y todo pero mi enemigo no se mueve, puedes decirme que estoy haciendo mal. E hecho todo al pie de la letra, hasta unity y visual están en la versión que tú utilizaste, no sé que pasa
@ClubGamerZone
@ClubGamerZone 3 жыл бұрын
Tendrías que darme más detalle, revisar el rigifbody o si te sale algún error, que los puntos a y b estén separados, el enemigo grounded
@bausan9992
@bausan9992 3 жыл бұрын
Ok, dame un segundo
@bausan9992
@bausan9992 3 жыл бұрын
Ahora este es el codigo, no se si me falta algo mas por sierto, me gustan mucho tus videos :D public class EnemyMovement : MonoBehaviour { float speed; Rigidbody2D rb; Animator anim; public bool isStatic; public bool isWalking; public bool walksRight; public Transform wallCheck, pitCheck, groundCheck; public bool walldetected, pitDetected, isGrounded; public float detectionRadius; public LayerMask whatIsGround; // Start is called before the first frame update void Start() { speed = GetComponent().speed; rb = GetComponent(); anim = GetComponent(); } // Update is called once per frame void Update() { pitDetected = !Physics2D.OverlapCircle(pitCheck.position, detectionRadius, whatIsGround); walldetected = Physics2D.OverlapCircle(wallCheck.position, detectionRadius, whatIsGround); isGrounded = Physics2D.OverlapCircle(groundCheck.position, detectionRadius, whatIsGround); if (pitDetected || walldetected) { Flip(); } } private void FixedUpdate() { if (isStatic) { anim.SetBool("Idle", true); rb.constraints = RigidbodyConstraints2D.FreezeAll; } if (isWalking) { rb.constraints = RigidbodyConstraints2D.FreezeRotation; if (!walksRight) { rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y); } else { rb.velocity = new Vector2(speed * Time.deltaTime, rb.velocity.y); } } } public void Flip() { walksRight = !walksRight; transform.localScale = new Vector2(-1, transform.localScale.y); } }
@bausan9992
@bausan9992 3 жыл бұрын
A y tambien quiero saber si tienen algun discord, me encantaria unirme, y poder hablar con todo el Club gamer :DDDDDDDDD
@bausan9992
@bausan9992 3 жыл бұрын
Yai?
@cquezadaM
@cquezadaM 3 жыл бұрын
Buenos videos, saludos
@cristiancarrazana3131
@cristiancarrazana3131 3 жыл бұрын
alguien q me ayude con lo de las patrullas todo bien pero las patrulla el enemigo sigue de largo no pesca el punto A y y sigue no patrulla
@Andy-sw1mb
@Andy-sw1mb 3 жыл бұрын
A mí también me pasó lo mismo
@Andy-sw1mb
@Andy-sw1mb 3 жыл бұрын
Creo que le tienes que aumentar la velocidad, como mínimo a 10; comprobar que esté activado "Is walker" y "Is Patrol"
@Andy-sw1mb
@Andy-sw1mb 3 жыл бұрын
Pero no se me activa lo de 4s de espera, y el esqueleto al dar la segunda vuelta, no se cambia de dirección y camina hacia atrás.
@Andy-sw1mb
@Andy-sw1mb 3 жыл бұрын
Este es mi scripts de Enemy Movement using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMovements : MonoBehaviour { float speed; Rigidbody2D rb; Animator anim; public bool isStatic; public bool isWalker; public bool isPatrol; public bool shouldWait; public float timeToWait; public bool isWaiting; public bool walksRight; public Transform wallCheck, pitCheck, groundCheck; bool walldetected, pitDetected, isGrounded; public float detectionRadius; public LayerMask whatIsGround; public Transform pointA, pointB; bool goToA, goToB; // Start is called before the first frame update void Start() { speed = GetComponent().speed; rb = GetComponent(); anim = GetComponent(); goToA = true; } // Update is called once per frame void Update() { pitDetected = !Physics2D.OverlapCircle(pitCheck.position, detectionRadius, whatIsGround); walldetected = Physics2D.OverlapCircle(wallCheck.position, detectionRadius, whatIsGround); isGrounded = Physics2D.OverlapCircle(groundCheck.position, detectionRadius, whatIsGround); if ((pitDetected || walldetected) && isGrounded) { Flip(); } } private void FixedUpdate() { if (isStatic) { anim.SetBool("Idle", true); rb.constraints = RigidbodyConstraints2D.FreezeAll; } if (isWalker) { rb.constraints = RigidbodyConstraints2D.FreezeRotation; anim.SetBool("Idle", false); if (!walksRight) { rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y); } else { rb.velocity = new Vector2(speed * Time.deltaTime, rb.velocity.y); } if (isPatrol) { if (goToA) { if(!isWaiting) { anim.SetBool("Idle", false); rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y); } rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y); if(Vector2.Distance(transform.position, pointA.position)
@Andy-sw1mb
@Andy-sw1mb 3 жыл бұрын
He tocado alguna cosa sin querer y ahora no me funciona lo de "Is Patrol", solo "Is Walker" ;(
Mejora la jugabilidad un 500%
16:27
Alva Majo
Рет қаралды 521 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
Support each other🤝
00:31
ISSEI / いっせい
Рет қаралды 81 МЛН
“Don’t stop the chances.”
00:44
ISSEI / いっせい
Рет қаралды 62 МЛН
I created the ONLY FPS with this mechanic!
6:56
Ryan Dev
Рет қаралды 6 М.
Cómo Hacer Personajes Pixel Art con Proporciones Humanas
8:32
Omel Pixela
Рет қаралды 21 М.
Get started with 2D Shader Graph in Unity - Dissolve Tutorial
16:59
Why You Should Learn RPG Maker
8:42
BinzuDev
Рет қаралды 91 М.
6 Years of Learning Game Development
17:20
Cobra Code
Рет қаралды 261 М.
I Made My First Game in Godot in 3 Weeks...
26:21
Jack Sather
Рет қаралды 466 М.
I Scraped the Entire Steam Catalog, Here’s the Data
11:29
Newbie Indie Game Dev
Рет қаралды 668 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН