Varlık Oluşturma ve Taşıma
Nesneleri ekranda görüntüleyin.
Varlık Oluşturma ve Taşıma, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Komutlar: Ertelenmiş Oluşturma
Sistemler paralel çalışırken World'ü doğrudan değiştiremezsiniz. Bunun yerine yapısal değişiklikleri Commands üzerinden kuyruğa alırsınız.
Oluşturma, kaldırma ve bileşen ekleme işlemleri kaydedilir ve zamanlama aşamasının sonunda uygulanır; böylece erişim güvenli kalır.
fn setup(mut commands: Commands) {
commands.spawn_empty();
}Bir Paketle Oluşturma
bundle, birlikte eklenen bir bileşen grubudur. En basit paket, yalnızca bileşenlerden oluşan bir demettir.
Bevy, demetin her öğesini eklenecek bir bileşen olarak ele alır; böylece tek bir oluşturma çağrısı bir varlığa başlangıç verilerinin tümünü sağlayabilir.
fn setup(mut commands: Commands) {
commands.spawn((
Position { x: 0.0, y: 0.0 },
Velocity { x: 1.5, y: 0.0 },
Player,
));
}Görmek İçin Bir Kamera
Kamera olmadan hiçbir şey görüntülenmez. 2B oyunlar için başlangıç sisteminizde bir Camera2d oluşturun.
Kameranın kendisi de kamera bileşenlerine sahip bir varlıktır; bu, ECS'nin tutarlılığına başka bir örnektir. Sahnedeki her şey bir varlıktır.
fn setup(mut commands: Commands) {
commands.spawn(Camera2d::default());
}Bir Sprite Oluşturma
Bir şey çizmek için bir varlığa Sprite ve Transform verin. Dönüşüm, dünya uzayındaki konumu, dönüşü ve ölçeği tutar.
Renkli bir sprite için görüntü varlığı gerekmez; bu, grafikleri içe aktarmadan önce hareketi prototiplemek için kullanışlıdır.
commands.spawn((
Sprite::from_color(Color::srgb(0.2, 0.7, 1.0), Vec2::new(40.0, 40.0)),
Transform::from_xyz(0.0, 0.0, 0.0),
Velocity { x: 80.0, y: 0.0 },
));Transform ve Özel Position Karşılaştırması
Gerçek Bevy oyunlarında genellikle özel bir Position yerine yerleşik Transform değerini hareket ettirirsiniz; çünkü görüntüleme doğrudan Transform değerini okur.
Öteleme bir Vec3'tür. 2B için x ve y değerlerini değiştirin, çizim sıralaması için z değerini kullanın.
#[derive(Component)]
struct Velocity { x: f32, y: f32 }
fn apply_velocity(mut q: Query<(&mut Transform, &Velocity)>) {
for (mut tf, vel) in &mut q {
tf.translation.x += vel.x;
tf.translation.y += vel.y;
}
}Bir Sorgu Üzerinde Değiştirerek İterasyon
Bileşen verilerini değiştirmek için &mut T isteyin ve &mut query üzerinde iterasyon yapın. Her öğe değiştirilebilir başvurular üretir.
Bevy, hiçbir iki sistemin aynı anda çakışan değiştirilebilir erişim tutmamasını garanti eder; bu nedenle diğer sistemler çalışırken bile bu döngü güvenlidir.
fn move_all(mut q: Query<&mut Transform, With<Player>>) {
for mut tf in &mut q {
tf.translation.x += 1.0;
}
}Birçok Varlık Oluşturma
Döngüler bir seviyeyi doldurmanızı sağlar. Engel ızgarası veya düşman sürüsü oluşturmak için bir Rust for döngüsünün içinde spawn çağırın.
Her iterasyon kendi komutunu kuyruğa alır ve bu komutların tümü aşırın sınırında birlikte uygulanır.
fn spawn_row(mut commands: Commands) {
for i in 0..5 {
commands.spawn((
Sprite::from_color(Color::WHITE, Vec2::splat(20.0)),
Transform::from_xyz(i as f32 * 30.0, 0.0, 0.0),
));
}
}Varlıkları Kaldırma
Bir varlığı commands.entity(id).despawn() ile tamamen kaldırın. Bu, bileşenlerini serbest bırakır ve varlık dizinini yeniden kullanıma açar.
Genellikle kaldırma işlemini, varlığın Entity kimliğini sorgulayan bir sistemden gerçekleştirirsiniz; örneğin ekran dışına çıkan bir mermi için.
fn cleanup(mut commands: Commands, q: Query<(Entity, &Transform)>) {
for (e, tf) in &q {
if tf.translation.y > 600.0 {
commands.entity(e).despawn();
}
}
}Daha Sonra Bileşen Ekleme
insert aracılığıyla çalışma zamanında mevcut bir varlığa yeni bileşenler ekleyebilirsiniz. Güçlendirilmiş bir oyuncuya Shield etiketi vermenin yolu budur.
Kaldırma işlemi de remove::<T>() ile aynı şekilde yapılır. Her ikisi de yapısal değişikliktir ve bu nedenle Commands üzerinden gerçekleştirilir.
commands.entity(player).insert(Shield { hits: 3 });
// later
commands.entity(player).remove::<Shield>();Katmanlama İçin Z
2B'de, bir dönüşümün ötelemesindeki z değeri çizim sırasını belirler. Daha yüksek z değeri üstte görüntülenir.
Arka plana düşük bir z, oyuncuya ise daha yüksek bir değer verin; böylece sprite'lar arka planın arkasında kaybolmaz.
// background behind, player in front
commands.spawn((bg_sprite, Transform::from_xyz(0.0, 0.0, 0.0)));
commands.spawn((player_sprite, Transform::from_xyz(0.0, 0.0, 10.0)));Hepsini Birbirine Bağlama
Startup'ta oluşturun, Update'te hareket ettirin. Başlangıç sistemi kamerayı ve varlıkları bir kez oluşturur; güncelleme sistemi bunları her karede ilerletir.
Bu ayrım, başlatma işlemlerini her karede çalışan hızlı yoldan uzak tutar.
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.add_systems(Update, apply_velocity)
.run();Kısa Kontrol
Yapısal değişikliklerin nasıl uygulandığını düşünün.
Özet: Oluşturma ve Hareket Ettirme
Varlıkları Commands aracılığıyla demetlerle oluşturur, Sprite ve Transform ile görüntüler, bir Update sisteminde dönüşümü değiştirerek hareket ettirirsiniz.
Oluşturmayı kaldırma ve bileşen ekleme de komutlardır. Sırada, hareketi klavye girdisine ve gerçek geçen zamana tepki verecek hâle getirmek var.
Sıkça Sorulan Sorular
“Varlık Oluşturma ve Taşıma” dersi ücretsiz mi?
Evet — “Varlık Oluşturma ve Taşıma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Varlık Oluşturma ve Taşıma” dersinde ne öğreneceğim?
Nesneleri ekranda görüntüleyin. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Varlık Oluşturma ve Taşıma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- ECS Yaklaşımı
- Varlık Oluşturma ve Taşıma
- Girdiyi ve Zamanı Yönetme
- Çarpışmalar ve Oyun Durumu