Menu
CoddyTech

Rebota en la pala

Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 4 de 36.

La pelota atraviesa la pala. La pelota es un Area2D. Su señal body_entered se activa cuando un cuerpo, como la pala, la toca. Haz que la pelota suba cuando ese cuerpo sea la pala:

func _ready():
	body_entered.connect(_on_body_entered)

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

abs() elimina el signo menos, así que -abs(velocity.y) siempre apunta hacia arriba. Un segundo contacto no puede hacer que la pelota vuelva a bajar.

Para que el jugador pueda apuntar, establece velocity.x según el lugar donde golpea la pelota. position.x - body.position.x es la distancia de la pelota con respecto al centro de la pala. Es negativa en la mitad izquierda y positiva en la derecha. Multiplícala por 5.

challenge icon

Desafío

Intermedio

Haz que la pelota rebote en la paleta.

  1. En ball.gd, conecta body_entered con _on_body_entered en _ready.
  2. Cuando el nombre del cuerpo sea Paddle, establece velocity.x en (position.x - body.position.x) * 5 y velocity.y en -abs(velocity.y).

Pulsa «Jugar» y atrapa la pelota: volverá a subir hacia el lado con el que chocó. Después, pulsa «Comprobar».

Pruébalo tú mismo

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 las lecciones de Proyectos

Practica por tu cuenta: Playground de Godot