Menu
CoddyTech

Bóng nảy khỏi thanh đỡ

Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 4 trên 36.

Bóng xuyên qua thanh đỡ. Bóng là một Area2D. Tín hiệu body_entered của bóng được kích hoạt khi một vật thể, như thanh đỡ, chạm vào bóng. Khi vật thể đó là thanh đỡ, hãy hướng bóng lên trên:

func _ready():
	body_entered.connect(_on_body_entered)

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

abs() loại bỏ dấu trừ, nên -abs(velocity.y) luôn hướng lên trên. Lần chạm thứ hai không thể làm bóng bay xuống dưới.

Để người chơi ngắm hướng bóng, hãy đặt velocity.x dựa trên vị trí bóng chạm vào thanh đỡ. position.x - body.position.x là khoảng cách từ bóng đến giữa thanh đỡ. Giá trị này âm ở nửa bên trái và dương ở nửa bên phải. Nhân giá trị đó với 5.

challenge icon

Thử thách

Trung bình

Khiến quả bóng bật ra khỏi thanh đỡ.

  1. Trong ball.gd, kết nối body_entered với _on_body_entered trong _ready.
  2. Khi tên của vật thể là Paddle, đặt velocity.x thành (position.x - body.position.x) * 5 và velocity.y thành -abs(velocity.y).

Nhấn Chơi và đón quả bóng: bóng bay ngược lên, về phía nó va vào. Sau đó nhấn Kiểm tra.

Tự làm thử

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

Tất cả bài học trong Dự án

Tự luyện tập: Playground Godot