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.
Desafío
IntermedioHaz que la pelota rebote en la paleta.
- En
ball.gd, conectabody_enteredcon_on_body_entereden_ready. - Cuando el nombre del cuerpo sea
Paddle, establecevelocity.xen(position.x - body.position.x) * 5yvelocity.yen-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