Puan ve Zafer
Coddy'nin Godot Journey'sinin Projeler bölümünün bir parçası. Ders 20 / 36.
Büyük bir kaya 20 puan, küçük bir kaya ise 50 puan değerindedir. _on_rock_broken boyutu bilir, bu yüzden puanları ekler ve $HUD/Score değerini günceller.
Hiç kaya kalmadığında kazanırsın. Sayımı 4'ten başlat. Kırılan her kaya için bir eksilt ve büyük bir kaya ikiye bölündüğünde iki ekle:
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You win!"
get_tree().paused = trueİki yeni kayayı burada say, spawn_rock içinde değil. spawn_rock kare sonunda çalışır, bu yüzden son iki küçük kaya oluşmadan önce sayı sıfıra ulaşır.
Kayalar, mermiler ve gemi Duraklatılabilir'dir. Main Her Zaman'dır.
Görev
ZorKayaları parçalayarak puan kazan ve hepsi yok olduğunda kazan.
main.gddosyasınavar score = 0ekle veScore: 0göster.- Parçalanan büyük bir kaya 20, küçük bir kaya 50 puan kazandırır. Skoru göster.
var rocks_left = 4ekle. Parçalanan her kaya için bir azalt, büyük bir kaya parçalandığında iki ekle. 0 olduğundaYou win!göster ve oyunu duraklat.
“Oyna” düğmesine bas ve kayaları temizle: “You win!” mesajı görünür. Ardından “Kontrol et” düğmesine bas.
Kendin dene
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
Projeler bölümündeki tüm dersler
Kendi başına pratik yap: Godot playground