Menu
CoddyTech

Rebata na raquete

Parte da seção Projetos do Journey de Godot da Coddy. Lição 4 de 36.

A bola atravessa a raquete. A bola é uma Area2D. O sinal body_entered é disparado quando um corpo, como a raquete, toca nela. Faça a bola subir quando esse corpo for a raquete:

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.y = -abs(velocity.y)

abs() remove o sinal de menos, então -abs(velocity.y) sempre aponta para cima. Um segundo toque não pode fazer a bola voltar para baixo.

Para permitir que o jogador mire, defina velocity.x com base no ponto onde a bola acerta. position.x - body.position.x é a distância da bola até o meio da raquete. Esse valor é negativo na metade esquerda e positivo na direita. Multiplique-o por 5.

challenge icon

Desafio

Médio

Faça a bola quicar na plataforma.

  1. Em ball.gd, conecte body_entered a _on_body_entered em _ready.
  2. Quando o nome do corpo for Paddle, defina velocity.x como (position.x - body.position.x) * 5 e velocity.y como -abs(velocity.y).

Pressione “Jogar” e pegue a bola: ela voa de volta para cima, em direção ao lado em que bateu. Depois, pressione “Verificar”.

Experimente você mesmo

extends Area2D

var velocity = Vector2(110, -280)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y

Todas as lições de Projetos

Pratique por conta própria: Playground de Godot