Büyük ve Küçük Kayalar
Coddy'nin Godot Journey'sinin Projeler bölümünün bir parçası. Ders 19 / 36.
Yalnızca büyük kayalar bölünmeli. Her kayaya bir size ver; büyük kayalar için 2, küçükler için 1 olsun ve rock.gd içindeki _ready fonksiyonunda bu değere göre çiz: scale = Vector2.ONE * size * 0.5.
spawn_rock da boyutu alır. rock.size değerini önce add_child(rock) çağrısından önce ayarla: _ready, add_child içinde çalışır; bu yüzden boyutu bundan sonra ayarlarsan ölçek için çok geç kalmış olursun.
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)Küçük bir kaya yalnızca parçalanır.
Görev
ZorBüyük kayalar ikiye ayrılsın, küçük kayalar kırılsın.
rock.gddosyasınavar size = 2ekle ve_readyiçindescale = Vector2.ONE * size * 0.5ayarla.spawn_rockişlevinesizeekle veadd_childçağrısından öncerock.sizeayarla. İlk 4 kayaya2ver.- Yalnızca
rock.size == 2olduğunda, boyutları1olan iki kayaya ayır.
“Oyna” düğmesine bas ve ateş et: büyük kayalar ikiye ayrılır, küçükler kırılı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)))
func spawn_rock(where, velocity):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5)
Projeler bölümündeki tüm dersler
2Proje: Asteroit Nişancısı
Gemiyi DöndürMotoru ÇalıştırKendi başına pratik yap: Godot playground