Ana Sayfa · Akademi · Robotik ve Kodlama · Scratch ile Programlama · Basit Fizik: Hız, Yerçekimi ve Çarpışma

Basit Fizik: Hız, Yerçekimi ve Çarpışma

Hız ve yerçekimi değişkenleriyle zıplama ve çarpışmayı Scratch'te modelle.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bir oyundaki karakterin gerçekçi biçimde düşmesini, zıplamasını ve yere çarpmasını sağlamak için hız değişkeni, yerçekimi ve çarpışma algılamayı öğreniyoruz.

Üretilecek kanıt

Kendi zıplayan karakterini yap. Şu adımları dene: y hızı adında bir değişken oluştur. Sahnenin altına yatay bir çizgi (zemin kuklası) çiz. Karakterin düşme + zemine çarpma programını kur (yukarıdaki "kukaya çarpınca dur" örneğine benzet). boşluk tuşuna basıldığında y hızı değişkenini 8 yap bloğunu ekle. Yeşil bayrağa tıkla ve boşluğa basarak karakteri…

Kontrol tuzağı

Konumu değiştirmeyi unutmak Sadece y hızı nı değiştirip y konumunu ... değiştir bloğunu koymazsan sayı değişir ama karakter kımıldamaz. Hız yalnızca bir sayıdır; onu her karede konuma uygulaman gerekir. Hızı döngü içinde sıfırlamak y hızı değişkenini 0 yap bloğunu yanlışlıkla sürekli tekrarla döngüsünün içine,…

Sonraki bağlantı

Oyun Tasarımında Puan ve Seviye: Zıplayan karakterine puan, can ve zorlaşan seviyeler ekleyerek onu gerçek bir oyuna dönüştürüyoruz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulKlonlar
İçerikStandart ders · 1.249 kelime
Son güncelleme

Bir cümlelik özet

Bir oyundaki karakterin gerçekçi biçimde düşmesini, zıplamasını ve yere çarpmasını sağlamak için hız değişkeni, yerçekimi ve çarpışma algılamayı öğreniyoruz.

Neden önemli?

Scratch'te bir kediyi hareket ettirmek kolaydır: "10 adım git" dersin ve kedi kayar gider. Ama gerçek oyunlarda nesneler öyle sabit hızla süzülmez. Bir top havaya atıldığında yavaşlar, durur ve tekrar hızlanarak düşer. Bir karakter zıplayınca önce yükselir, sonra geri iner.

Bu doğal görünümü elde etmek için nesnenin hızını ayrı tutmamız ve bu hızı her karede biraz değiştirmemiz gerekir. Bu ders, "top neden gerçek gibi zıplıyor?" sorusunun cevabıdır. Aynı mantık zıplama oyunlarının, platform oyunlarının ve fırlatma oyunlarının temelini oluşturur.

Ben bu fikri ilk denediğimde karakteri düz bir hızla aşağı indirmiştim; hareket robot gibi görünüyordu. Hızı her karede biraz artırınca düşüş birden gerçekçi oldu. Aşağıda bu adımları paylaşıyorum.

Hız: hareketin motoru

Hız değişkeni nedir?

Konum, karakterin nerede olduğudur. Hız, karakterin her karede konumunu ne kadar değiştireceğidir. Scratch bir sahneyi saniyede birçok kez yeniden çizer; her yeniden çizmeye "kare" diyelim. Eğer her karede konuma sabit bir sayı eklersek, nesne düzgün akıcı hareket eder.

Bunu yapmak için Değişkenler (Variables) kategorisinden yeni bir değişken oluştururuz. Adına x hızı diyelim. Sonra bir döngü içinde x konumunu bu değişken kadar değiştiririz.

Örnek: sağa doğru hızlanan top

Aşağıdaki program topu önce yavaş, sonra gitgide daha hızlı sağa götürür. Çünkü her karede x hızı biraz artıyor.

yeşil bayrağa tıklandığında
x hızı değişkenini 0 yap
sürekli tekrarla
  x konumunu (x hızı) kadar değiştir
  x hızı değişkenini 0.5 değiştir

Burada iki farklı şey oluyor:

Hız sabit kalsaydı top düz hızla kayardı. Hızı her karede artırdığımız için top hızlanır. İşte fizik hissi buradan gelir: hareketi değil, hızın kendisini değiştiriyoruz.

Yerçekimi ve zıplama

Yerçekimi her karede hızı azaltır

Yerçekimi, nesneleri sürekli aşağı çeken bir kuvvettir. Scratch'te y ekseni yukarıyı gösterir: y konumu büyürse nesne yükselir, küçülürse alçalır. Yerçekimini taklit etmek için bir y hızı değişkeni tutarız ve her karede bu hızı biraz azaltırız. Sonra y konumunu bu hız kadar değiştiririz.

Kural iki satırdır:

  1. y konumunu (y hızı) kadar değiştir — nesneyi mevcut hızıyla taşı.
  2. y hızı değişkenini -0.5 değiştir — hızı biraz aşağı yönlü yap.

Negatif sayı ile değiştirmek hızı zamanla küçültür; bir süre sonra hız negatif olur ve nesne aşağı düşmeye başlar.

Örnek: yerçekimiyle düşen karakter

yeşil bayrağa tıklandığında
y hızı değişkenini 0 yap
sürekli tekrarla
  y konumunu (y hızı) kadar değiştir
  y hızı değişkenini -0.5 değiştir

Karakteri sahnenin üstüne koyup bu programı çalıştırırsan, önce yavaş, sonra hızlanarak aşağı düşer. Tıpkı elinden bıraktığın bir top gibi. Buradaki sihir tek satırda: hızı her karede biraz daha negatif yapmak.

Zıplama nasıl olur?

Zıplama, aslında hıza aniden yukarı yönlü büyük bir değer vermektir. Boşluk tuşuna basınca y hızı değişkenini pozitif bir sayı yaparız. Yerçekimi sonra bu hızı yavaş yavaş azaltır; karakter yükselir, yavaşlar, durur ve geri düşer.

boşluk tuşuna basıldığında
y hızı değişkenini 8 yap

Bu blok Olaylar (Events) kategorisindendir. Düşme programı arka planda çalışmaya devam ederken bu tek dokunuş karakteri havaya fırlatır. 8 sayısını büyütürsen zıplama yükselir, küçültürsen alçalır.

Çarpışma algılama

Zemine değmek

Karakter sonsuza kadar düşemez; bir yerde durmalı. Bunun için Algılama (Sensing) kategorisindeki değiyor mu? bloğunu kullanırız. Karakter zemine (örneğin yeşil bir çizgi kuklasına) değdiğinde düşüşü durdururuz: y hızı değişkenini 0 yaparız.

yeşil bayrağa tıklandığında
y hızı değişkenini 0 yap
sürekli tekrarla
  y konumunu (y hızı) kadar değiştir
  eğer <(zemin) rengine değiyor mu?> ise
    y hızı değişkenini 0 yap
  değilse
    y hızı değişkenini -0.5 değiştir

Burada eğer ... ise ... değilse bloğu (Kontrol / Control) karar veriyor: zemine değiyorsak hızı sıfırla ve yerçekimini uygulama; değmiyorsak yerçekimini çalıştırmaya devam et. Böylece karakter zemine oturur ve orada durur.

Örnek: kukaya çarpınca dur

Aynı fikir engellerde de çalışır. Bir platform oyununda karakter bir duvara veya kutuya çarpınca ilerlemeyi durdurmak isteriz. Diyelim karakterin bir x hızı var ve sağa gidiyor:

sürekli tekrarla
  x konumunu (x hızı) kadar değiştir
  eğer <(Duvar) kuklasına değiyor mu?> ise
    x konumunu ((x hızı) * -1) kadar değiştir
    x hızı değişkenini 0 yap

Karakter duvara girerse önce son adımı geri alırız (x hızının tersi kadar geri götürürüz), sonra hızı sıfırlarız. Böylece karakter duvarın içinden geçmez, önünde durur. Çarpışma algılama, "iki nesne aynı yeri paylaşıyor mu?" sorusunu sormak ve buna göre tepki vermektir.

Mini uygulama

Kendi zıplayan karakterini yap. Şu adımları dene:

  1. y hızı adında bir değişken oluştur.
  2. Sahnenin altına yatay bir çizgi (zemin kuklası) çiz.
  3. Karakterin düşme + zemine çarpma programını kur (yukarıdaki "kukaya çarpınca dur" örneğine benzet).
  4. boşluk tuşuna basıldığında y hızı değişkenini 8 yap bloğunu ekle.
  5. Yeşil bayrağa tıkla ve boşluğa basarak karakteri zıplat.

Denemeler:

Sık yapılan hatalar

Konumu değiştirmeyi unutmak

Sadece y hızını değiştirip y konumunu ... değiştir bloğunu koymazsan sayı değişir ama karakter kımıldamaz. Hız yalnızca bir sayıdır; onu her karede konuma uygulaman gerekir.

Hızı döngü içinde sıfırlamak

y hızı değişkenini 0 yap bloğunu yanlışlıkla sürekli tekrarla döngüsünün içine, koşulsuz koyarsan karakter hiç düşmez; hız her karede sıfırlanır. Sıfırlama yalnızca zemine değince yapılmalı.

Yerçekimini pozitif yapmak

y hızını pozitif bir sayı ile değiştirirsen (örneğin +0.5) karakter aşağı değil yukarı uçar. Yerçekimi aşağı çeker; bu yüzden değeri negatif olmalı.

Çarpışmayı çok geç kontrol etmek

Karakteri önce çok büyük bir adımla hareket ettirip sonra çarpışmayı kontrol edersen, karakter duvarın içine gömülebilir. Adımları küçük tut ve her adımdan sonra kontrol et.

Güvenlik notu

Bu ders tamamen ekran üzerinde, Scratch içinde çalışır; fiziksel bir tehlike içermez. Yine de ekran başında uzun süre kalmamaya dikkat et: her 30–40 dakikada bir kısa mola ver, gözlerini dinlendir ve biraz hareket et. Scratch projeni paylaşmadan önce bir yetişkinle birlikte gözden geçir; yorumlarda kişisel bilgilerini (adres, okul, telefon) yazma.

Ders özeti

Kontrol soruları

  1. Scratch'te "kare" ne demektir ve hız neden her karede uygulanır?
  2. Yerçekimini taklit etmek için y hızını her karede artırmalı mı yoksa azaltmalı mı? Neden?
  3. Zıplama sağlamak için hangi ana değişkene ne yaparız?
  4. Karakterin sonsuza kadar düşmesini hangi blok engeller ve hangi kategoridedir?
  5. Karakter duvarın içinden geçiyorsa iki olası nedeni nedir?

Cevaplar

  1. Kare, Scratch'in sahneyi bir kez yeniden çizmesidir; sahne saniyede birçok kez yenilenir. Hızı her karede uyguladığımız için hareket akıcı görünür ve zamanla hızlanma/yavaşlama oluşturabiliriz.
  2. Azaltmalıyız. y ekseni yukarıyı gösterdiği için hızı negatif yönde değiştirmek nesneyi aşağı çeker; bu yerçekiminin doğal etkisidir.
  3. y hızı değişkenini pozitif bir sayı yaparız (örneğin y hızı değişkenini 8 yap). Yerçekimi sonra bu hızı yavaşça azaltır ve karakter yükselip geri iner.
  4. Algılama (Sensing) kategorisindeki değiyor mu? bloğu. Zemine değince y hızını 0 yaparak düşüşü durdururuz.
  5. (a) Adım çok büyüktür, karakter tek karede duvarın içine girer; (b) çarpışma kontrolü yapılmıyor ya da çarpışınca hız sıfırlanıp geri alınmıyordur.

Kaynak ve doğrulama notu

“Basit Fizik: Hız, Yerçekimi ve Çarpışma” dersi için doğrulama odağı Hız: hareketin motoru ile Örnek: sağa doğru hızlanan top arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Blok adları Scratch’in güncel temel kategorileriyle uyumlu tutulmuştur. Proje davranışı; başlangıç, normal oyun, hata ve yeniden başlatma durumlarında ayrı ayrı denenmelidir.

Sonraki ders

Oyun Tasarımında Puan ve Seviye: Zıplayan karakterine puan, can ve zorlaşan seviyeler ekleyerek onu gerçek bir oyuna dönüştürüyoruz.

Quiz’i BaşlatScratch ile Programlama bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.