Rozbij cegły
Część sekcji Projekty ścieżki Godot w Coddy. Lekcja 6 z 33.
Piłka przelatuje przez cegły. Cegły też są obiektami, a każda z nich należy do grupy bricks. is_in_group pozwala odróżnić cegłę od paletki.
Każda cegła ma funkcję smash(). Rozbija ona cegłę na iskry i usuwa ją.
elif body.is_in_group("bricks"):
body.smash()Następnie piłka odbija się od środka cegły: w dół, jeśli znajduje się niżej niż cegła, a w górę, jeśli jest wyżej. Piłka może uderzyć cegłę od góry po prześlizgnięciu się przez szczelinę.
if position.y > body.position.y:
velocity.y = abs(velocity.y)
else:
velocity.y = -abs(velocity.y)Nie odwracaj velocity.y. Jeśli piłka dotknie dwóch cegieł naraz, dwa odwrócenia się zniosą.
Wyzwanie
ŚredniW _on_body_entered dodaj elif dla ciał należących do grupy bricks:
- Wywołaj
body.smash(). - Odbij piłkę w dół, jeśli znajduje się poniżej środka cegły, a w górę, jeśli jest powyżej.
Spróbuj swoich sił
extends Area2D
var velocity = Vector2(110, -280)
func _ready():
body_entered.connect(_on_body_entered)
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
func _on_body_entered(body):
if body.name == "Paddle":
velocity.x = (position.x - body.position.x) * 5
velocity.y = -abs(velocity.y)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
Poćwicz samodzielnie: Edytor online Godot