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.
Thử thách
Trung bìnhKhiến quả bóng bật ra khỏi thanh đỡ.
- Trong
ball.gd, kết nốibody_enteredvới_on_body_enteredtrong_ready. - Khi tên của vật thể là
Paddle, đặtvelocity.xthành(position.x - body.position.x) * 5vàvelocity.ythà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
1Dự án: Breakout
Thanh đỡ trong BreakoutGiữ thanh đỡ trong màn hình4Dự án: trò chơi khám phá hầm ngục
Khám phá hầm ngụcNhặt chìa khóaTự luyện tập: Playground Godot