Menu
CoddyTech

Vom Schläger abprallen

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 4 von 33.

Der Ball geht durch den Schläger hindurch. Der Ball ist ein Area2D. Sein Signal body_entered wird ausgelöst, wenn ein Körper, etwa der Schläger, ihn berührt. Lenke den Ball nach oben, 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 von der Mitte des Schlägers. Auf der linken Hälfte ist er negativ, auf der rechten positiv. Multipliziere ihn mit 5.

challenge icon

Aufgabe

Mittel

Lass den Ball in ball.gd vom Schläger abprallen:

  1. Verbinde 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).

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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground