Menu
CoddyTech

Odbicie od paletki

Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 4 z 36.

Piłka przelatuje przez paletkę. Piłka jest obiektem Area2D. Jej sygnał body_entered jest emitowany, gdy dotknie jej ciało, takie jak paletka. Skieruj piłkę w górę, gdy tym ciałem jest paletka:

func _ready():
	body_entered.connect(_on_body_entered)

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

abs() usuwa znak minus, więc -abs(velocity.y) zawsze wskazuje w górę. Drugie dotknięcie nie może odesłać piłki w dół.

Aby umożliwić graczowi celowanie, ustaw velocity.x na podstawie miejsca, w którym piłka uderza w paletkę. position.x - body.position.x to odległość piłki od środka paletki. Jest ujemna po lewej stronie i dodatnia po prawej. Pomnóż ją przez 5.

challenge icon

Wyzwanie

Średni

Spraw, by piłka odbijała się od paletki.

  1. W pliku ball.gd połącz body_entered z _on_body_entered w _ready.
  2. Gdy nazwa ciała to Paddle, ustaw velocity.x na (position.x - body.position.x) * 5, a velocity.y na -abs(velocity.y).

Naciśnij „Graj” i złap piłkę: poleci z powrotem w górę, w stronę, z której się odbiła. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Projekty

Poćwicz samodzielnie: Edytor online Godot