CursosEmpresasBlogLiveConfPrecios

Colisiones

Clase 11 de 28 • Taller de Godot: Crear un Videojuego Shoot’em Up

Clase anteriorSiguiente clase
    Oscar david Guerra hernandez

    Oscar david Guerra hernandez

    student•
    hace 2 años

    Hola profe escribi el codigo como lo muestra en la clase pero el enemigo dirigido no explota

    Juan José Arcila Valderrama

    Juan José Arcila Valderrama

    student•
    hace 2 años

    En Godot 4 en adelante, yield ya no existe, en su lugar está await. await es fácil de usar, solo recuerda esta formulita:

    yield(nodo, "señal") //se convierte en await nodo.señal ```Y con eso van piola ;) Por cierto, si tienen problemas ejecutando las animaciones de los animated sprites, asegúrense de activar una cosita llamada "Reproducción Automática al Cargar" *en la animación idle de los animated sprites*. Si no lo hacen no se reproducen las animaciones ni la explosión. Revisen eso para todos los animated sprites que tengan, puede que no les funcionen bien y no sepan
    Luis Gabriel

    Luis Gabriel

    student•
    hace 3 años

    Lo logre, cree el enemigo como una escena aparte y le inclui el codigo de set explosion, funciono muy bien

      Cristian Ramanzin

      Cristian Ramanzin

      teacher•
      hace 3 años

      ¡Genial Luis! No te olvides de compartirnos como te quedó el proyecto 😁

    DANIEL SANTIAGO MOLINA IBAÑEZ

    DANIEL SANTIAGO MOLINA IBAÑEZ

    student•
    hace 2 años

    asi queda la funcion set explosion en godot 4

    func set_explosion(): collision_mask = 0 collision_layer = 0 $AnimatedSprite2D.animation = "explosion" await $AnimatedSprite2D.animation_finished queue_free()
    Francisco Patricio Maturana Vásquez

    Francisco Patricio Maturana Vásquez

    student•
    hace 3 años

    Lo que yo hice fue mover la función set_explosion a mi script de disparo, luego agregué la animación de explosión a la cadena de enemigos y listo

    #Script de disparo extends RigidBody2D func set_explosion(enemy): #Agregué el parámetro enemy para pasarle el nodo enemigo a la función enemy.collision_mask = 0 enemy.collision_layer = 0 enemy.get_node("AnimatedSprite").animation = "explosion" #tuve que utilizar get_node porque al utilizar $AnimatedSprite no lo reconoce dentro del nodo yield(enemy.get_node("AnimatedSprite"), "animation_finished") enemy.queue_free() func _on_Area2D_area_entered(area): if area.is_in_group("enemy"): set_explosion(area) #Misma función pero pasando el área como parámetro
    Jesús García

    Jesús García

    student•
    hace 2 meses

    Dejo el código para la versión 4.5.

    para personaje:

    func disparo_func(): if cooldown: cooldown = false $Timer.start() var instancia_disparo = disparo.instantiate() instancia_disparo.global_position = $DisparoPos.global_position add_child(instancia_disparo) instancia_disparo.set_as_top_level(true)

    para el disparo:

    func _on_area_2d_area_entered(area: Area2D) -> void: if area.is_in_group("enemigos"): area.set_explosion() pass

    para enemigo dirigido

    func set_explosion(): collision_layer = 0 collision_mask = 0 $AnimatedSprite2D.animation = "explosion" await $AnimatedSprite2D.animation_finished queue_free()
    José Ignacio Gajardo Soto

    José Ignacio Gajardo Soto

    student•
    hace 3 meses

    En Godot 4.4.1 las líneas: add_child(instancia_disparo)

    instancia_disparo.set_as_toplevel(true)

    Generan problemas ya que no reconoce "set_as_toplevel"

    Reemplace esas 2 líneas por esta para solucionarlo: get_tree().current_scene.add_child(instancia_disparo)

    También tenia el problema de que las balas colisionaban con el barco, para arreglar este problema puse la bala en una collision layer y mask diferente de la del barco, espero esto ayude a alguien por ahí!

Escuelas

  • Desarrollo Web
  • English Academy
  • Marketing Digital
  • Inteligencia Artificial y Data Science
  • Ciberseguridad
  • Liderazgo y Habilidades Blandas
  • Diseño de Producto y UX
  • Contenido Audiovisual
  • Desarrollo Móvil
  • Diseño Gráfico y Arte Digital
  • Programación
  • Negocios
  • Blockchain y Web3
  • Recursos Humanos
  • Finanzas e Inversiones
  • Startups
  • Cloud Computing y DevOps

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads