miércoles, 19 de marzo de 2025

Página 11: Apuntes de "How to make an ARPG in godot 4 #12: Player-enemy collision"

Lista de reproducción completa del tutorial de Godot sobre cómo crear un Action-RPG en Godot, creada por MakerTech

https://www.youtube.com/playlist?list=PLMQtM2GgbPEVuTgD4Ln17ombTg6EahSLr

Vamos agregar colisiones al enemigo, trastear con las animaciones para que el colisionador coincida con la forma del sprite y crear una HurtBox para que el player.detecte las colisiones del enemigo entre otras cosas.

Vamos al inspector del CharacterBody2D, modificamos Canvas Item > Ordering > Z Index a 1, para evitar que el enemigo se ponga por detrás del TitleMap

Agregamos un CollisionShape2D que cubra al personaje.


Dentro del editor, vamos a las capas de colisión, esto se encuentra en el inspector del nodo CharacterBody2D, CollisionObject2D > Collsion > Layer y pulsamos a los tres puntos y pulsamos Edit Layer Names.

 

 Lo dejamos de esta forma.

 

Ponemos el Layer y Mask a 2. 

 Vamos a la escena del Mundo, vamos a modificar las Physics Layers del TileMap del mundo.

Seleccionamos 1 y 2 para Collision Layer y Collision Mask, de esta forma las colisiones también afectara a los enemigos.

 

Vamos a la escena del Player y le vamos a crear un Area2D llamado HurtBox con un Collisión Shape2D y modificaremos el CollisionObect2D > Collision > layer (1) y Mask(1,2) del CharacterBody2D

Vamos hacer lo mismo para el enemigo que hemos creado, pero esta vez le vamos a llamar hitBox


Debemos reemplazar AnimatedSprite2D por AnimationPlayer y crear un Sprite2D para el sprite inicial, como hicimos al crear al jugador. Esta vez, haremos que el colisionador se adapte a la animación. 

No olvidemos modificar el script para que hagan referencia al AnimationPlayer.

Agregaremos los nodos de Node2D > Transform > Position y Node2D >  Transform > Scale del CollisionShape2D al AnimationPlayer para trabajar con su posición y tamaño en cada frame

Una vez terminemos de agregar los nodos, modificaremos Update Mode de Continous a Discrete de Position y Scale, así la transición se actualizara al frame en lugar de hacer una transición de un frame a otro.

 

Finalmente, vamos crear un signal al Hurtbox del Jugador. 

 

 Agregaremos este código para comprobar si funcionan las colisiones contra los enemigos.


Pues ya esta, ya se esta poniendo densa la cosa y apenas hemos empezado.

No hay comentarios:

Publicar un comentario

Archivo del blog