Vom Schläger abprallen
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 4 von 36.
Der Ball geht durch den Schläger hindurch. Der Ball ist ein Area2D. Sein Signal body_entered wird ausgelöst, wenn ein Körper, zum Beispiel der Schläger, ihn berührt. Lass den Ball nach oben fliegen, wenn dieser Körper der Schläger ist:
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
if body.name == "Paddle":
velocity.y = -abs(velocity.y)abs() entfernt das Minuszeichen, sodass -abs(velocity.y) immer nach oben zeigt. Eine zweite Berührung kann den Ball nicht wieder nach unten schicken.
Damit der Spieler zielen kann, lege velocity.x anhand der Stelle fest, an der der Ball auftrifft. position.x - body.position.x ist der Abstand des Balls zur Mitte des Schlägers. Auf der linken Hälfte ist der Wert negativ, auf der rechten positiv. Multipliziere ihn mit 5.
Aufgabe
MittelLass den Ball vom Schläger abprallen.
- Verbinde in
ball.gdbody_enteredin_readymit_on_body_entered. - Wenn der Name des Körpers
Paddlelautet, setzevelocity.xauf(position.x - body.position.x) * 5undvelocity.yauf-abs(velocity.y).
Drücke „Spielen“ und fange den Ball: Er fliegt zurück nach oben, in Richtung der Seite, auf die er getroffen ist. Drücke dann „Prüfen“.
Probier es selbst
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
Alle Lektionen in Projekte
Übe selbstständig: Godot-Playground