Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Lass den Ball vom Schläger abprallen.

  1. Verbinde in ball.gd body_entered in _ready mit _on_body_entered.
  2. Wenn der Name des Körpers Paddle lautet, setze velocity.x auf (position.x - body.position.x) * 5 und velocity.y auf -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