Menu
CoddyTech

Las paredes te detienen

Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 9 de 28.

Las paredes y el pilar son nodos StaticBody2D. Un cuerpo estático nunca se mueve. Cada uno tiene un CollisionShape2D para su forma sólida y un ColorRect para dibujarlo.

Solo move_and_slide() comprueba si hay paredes. Cambiar position mueve el cuerpo sin comprobarlo, así que atraviesa las paredes:

position.x += direction * speed * delta   # atraviesa paredes
velocity.x = direction * speed            # se detiene al chocar con paredes
move_and_slide()

El texto que aparece después de # es un comentario. Godot lo omite.

Un cuerpo que choca contra una pared en ángulo conserva la parte de su movimiento que va a lo largo de la pared. Se desliza en lugar de quedarse atascado, de ahí el nombre move_and_slide().

challenge icon

Desafío

Fácil

Haz que las paredes detengan al héroe.

  1. Reemplaza la línea position.x por una que establezca velocity.x en direction * speed, sin delta.
  2. Debajo, llama a move_and_slide().

Presiona «Jugar» y camina en ambas direcciones: el pilar y la pared detienen al héroe. Después, presiona «Comprobar».

Pruébalo tú mismo

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
	var direction = Input.get_axis("move_left", "move_right")
	position.x += direction * speed * delta

Todas las lecciones de Entrada y movimiento

Practica por tu cuenta: Playground de Godot