Menu
CoddyTech

Paredes impedem seu avanço

Parte da seção Entrada e movimento do Journey de Godot da Coddy. Lição 9 de 28.

As paredes e o pilar são nós StaticBody2D. Um corpo estático nunca se move. Cada um tem um CollisionShape2D para sua forma sólida e um ColorRect para desenhá-lo.

Somente move_and_slide() verifica se há paredes. Alterar position move o corpo sem verificar, então ele atravessa as paredes:

position.x += direction * speed * delta   # atravessa paredes
velocity.x = direction * speed            # bloqueado por paredes
move_and_slide()

O texto após # é um comentário. Godot o ignora.

Um corpo que bate em uma parede em um ângulo mantém a parte do movimento ao longo da parede. Ele desliza em vez de ficar preso, o que dá nome a move_and_slide().

challenge icon

Desafio

Fácil

Faça com que as paredes parem o herói.

  1. Substitua a linha position.x por uma que defina velocity.x como direction * speed, sem delta.
  2. Abaixo dela, chame move_and_slide().

Pressione “Jogar” e caminhe nos dois sentidos: o pilar e a parede param o herói. Depois, pressione “Verificar”.

Experimente você mesmo

extends CharacterBody2D

var speed = 200

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

Todas as lições de Entrada e movimento

Pratique por conta própria: Playground de Godot