Phá gạch
Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 6 trên 36.
Quả bóng đi xuyên qua các viên gạch. Các viên gạch cũng là vật thể, và mỗi viên thuộc nhóm bricks. is_in_group giúp phân biệt viên gạch với thanh đỡ.
Mỗi viên gạch có một hàm smash(). Hàm này làm viên gạch vỡ tung thành các tia lửa rồi xóa nó.
elif body.is_in_group("bricks"):
body.smash()Sau đó, bóng bật ra khỏi phần giữa của viên gạch: đi xuống nếu bóng ở thấp hơn viên gạch, đi lên nếu bóng ở cao hơn. Bóng có thể đập vào viên gạch từ phía trên sau khi lọt qua một khe hở.
if position.y > body.position.y:
velocity.y = abs(velocity.y)
else:
velocity.y = -abs(velocity.y)Đừng đảo chiều velocity.y. Nếu bóng chạm vào hai viên gạch cùng lúc, hai lần đảo chiều sẽ triệt tiêu lẫn nhau.
Thử thách
Trung bìnhĐể bóng phá vỡ các viên gạch.
- Trong
_on_body_entered, thêm mộtelifcho các vật thể thuộc nhómbricks. - Gọi
body.smash(). - Cho bóng nảy xuống nếu nó ở dưới điểm giữa của viên gạch, nảy lên nếu nó ở trên.
Nhấn Chơi: các viên gạch vỡ từng viên một. Sau đó nhấn Kiểm tra.
Tự làm thử
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)
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