İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Özel Ders Başvuru Ücretsiz ön görüşme Ana Sayfa

Scratch’te Karakter Nasıl Zıplatılır? Yerçekimi ve Zemin Kontrolü

scratchte-karakter-nasil-ziplatilir-yercekimi-ve-zemin-kontrolu
Bu yazıda neler var?
  1. Scratch’te zıplama hangi mantıkla çalışır?
  2. Kedi kuklası için y hızı ve yerçekimi bloklarını kur
  3. Zeminde durmayı ve yalnız yerde zıplamayı nasıl sağlarsın?
  4. Sağ ve sol hareketi ekleyerek platform oyunu oluştur
  5. Scratch zıplama kodundaki hataları nasıl bulursun?
  6. Sık Sorulan Sorular

Scratch zıplama kodu, karakterin y yönündeki hareketini bir y hızı değişkeniyle yöneterek kurulur. Yukarı ok tuşuna basıldığında karaktere yukarı doğru bir itiş verilir, ardından bu hız her yenileme adımında azaltılır. Böylece kedi kuklası önce yükselir, yavaşlar ve sonra aşağı inmeye başlar.

Bu mantığı yeşil bir zemin üzerindeki kedi kuklasıyla uygulayabilirsin. İlk aşamada karakterin hareketini yöneten değişkeni ve yerçekiminin etkisini kuracağız. Zemine temas kontrolü daha sonra eklendiğinde, karakterin zeminin içinden geçmesi ve havada tekrar tekrar zıplaması gibi sorunlar da düzenlenebilir.

Scratch’te zıplama hangi mantıkla çalışır?

Scratch’te zıplama, karakterin y yönündeki hareketini bir y hızı değişkeni ile yönetme mantığına dayanır. Bu değişkeni, karakterin o anda ne kadar hızlı yukarı ya da aşağı hareket ettiğini saklayan küçük bir sayaç gibi düşünebilirsin.

Karakterin sahnedeki yüksekliğini y konumu gösterir. Y hızı ise bu konumun her yenileme adımında ne kadar değişeceğini belirler. Oyunun hareketleri yeniden hesapladığı her kısa adımı bir kare gibi düşün. Bir karede y hızını y konumuna eklersen karakter yukarı ya da aşağı hareket eder.

Örneğin y hızı 12 ise karakterin y konumu 12 birim artar ve kedi yukarı çıkar. Sonraki karede y hızı 11 olursa yine yukarı gider, ancak önceki kareye göre biraz daha yavaş hareket eder. Hız 0 olduğunda karakter en yüksek noktaya yaklaşır. Değer negatif olduğunda ise y konumu azalır ve karakter aşağı inmeye başlar.

Günlük hayattan bir örnek olarak yukarı doğru fırlattığın bir topu düşünebilirsin. Top ilk anda hızlı yükselir, yükseldikçe yavaşlar ve bir noktada aşağı doğru hareket eder. Scratch’te y hızı değişkenini her karede azaltmak, bu hareketin basit bir benzerini oluşturur.

Bu sistem için önce Değişkenler kategorisinden Bir Değişken Oluştur seçeneğine tıklayıp y hızı adında bir değişken oluştur. Scratch Türkçe arayüzünde karakterin yüksekliğini değiştiren blok y konumunu ... değiştir, konumu doğrudan belirleyen blok ise y konumunu ... yap şeklindedir.

Kedi kuklası için y hızı ve yerçekimi bloklarını kur

Kedi kuklası için y hızı ve yerçekimi bloklarını kur

Kedi kuklasını yeşil zeminin biraz üstüne yerleştirdikten sonra aşağıdaki temel blok dizisini kedi kuklasına ekle:

yeşil bayrağa tıklandığında
y hızı değişkenini 0 yap
sürekli tekrarla
    eğer <yukarı ok tuşuna basıldı mı?> ise
        y hızı değişkenini 12 yap
    y konumunu (y hızı) kadar değiştir
    y hızı değişkenini -1 kadar değiştir

yeşil bayrağa tıklandığında bloğu, oyun başladığında bu kod dizisini çalıştırır. Hemen altındaki y hızı değişkenini 0 yap bloğu, önceki denemeden kalan hız değerini temizler ve karakterin başlangıçta hareket etmeden beklemesini sağlar.

sürekli tekrarla bloğu, zıplama hareketinin yalnızca bir kez değil, oyun devam ettiği sürece tekrar tekrar hesaplanmasını sağlar. Bu döngünün içindeki eğer yukarı ok tuşuna basıldı mı? ise koşulu, oyuncunun zıplama isteğini kontrol eder.

Yukarı ok tuşuna basıldığında y hızı değişkenini 12 yap bloğu çalışır. Buradaki 12, karaktere verilen ilk yukarı yönlü itiştir. Ardından y konumunu y hızı kadar değiştir bloğu, o karedeki hıza göre kedinin yüksekliğini günceller.

Son blok olan y hızı değişkenini -1 kadar değiştir, her tekrarda y hızını bir azaltır. Bu değer, yerçekiminin basitleştirilmiş etkisini temsil eder. Kedi önce yükselir, y hızı azaldıkça yükselişi yavaşlar, değer negatife döndüğünde aşağı inmeye başlar. 12 ve -1 değerleri hareketin yüksekliğini ve düşüş hızını belirleyen ayarlardır.

Bu temel dizide henüz zemine temas kontrolü bulunmadığı için kedi aşağı doğru hareket etmeyi sürdürebilir. Bir sonraki adımda yeşil zemine değdiğinde karakteri durdurmayı ve yalnızca yerdeyken zıplamasını sağlamayı ekleyeceğiz.

Zeminde durmayı ve yalnız yerde zıplamayı nasıl sağlarsın?

Zeminde durmayı ve yalnız yerde zıplamayı nasıl sağlarsın?

Karakteri yerde tutmak için yeşil zemine temas edip etmediğini sürekli kontrol etmelisin. Kedi kuklası yeşil renge değdiğinde düşüşü durdurulur, y hızı sıfırlanır ve yukarı ok yalnızca yerde mi değişkeni 1 olduğunda yeni bir zıplama başlatır.

Değişkenler bölümünden y hızı ve yerde mi adında iki değişken oluştur. yerde mi değişkeni bir cevap kartı gibi çalışır. Değeri 1 ise kedi zemindedir, 0 ise havadadır.

Yeşil bayrak tıklandığında
y hızı değişkenini 0 yap
yerde mi değişkenini 0 yap
sürekli tekrarla
  y hızı değişkenini -1 kadar değiştir
  y konumunu (y hızı) kadar değiştir
  yerde mi değişkenini 0 yap
  y konumunu -1 değiştir
  eğer <[yeşil] rengine değiyor mu?> ise
    yerde mi değişkenini 1 yap
    y hızı değişkenini 0 yap
    değil <[yeşil] rengine değiyor mu?> olana kadar tekrarla
      y konumunu 1 değiştir
  eğer <<yukarı ok tuşuna basıldı mı?> ve <yerde mi = 1>> ise
    y hızı değişkenini 12 yap

y hızı değişkenini -1 kadar değiştir bloğu yerçekimini taklit eder. Her döngüde dikey hız biraz azalır; böylece kedi önce yükselir, sonra yavaşlar ve aşağı düşer. y konumunu (y hızı) kadar değiştir bloğu da bu hızın kedinin sahnedeki dikey konumuna uygulanmasını sağlar.

[yeşil] rengine değiyor mu? bloğu, kedinin görünen ve saydam olmayan kısmıyla seçilen yeşil rengin aynı noktada örtüşüp örtüşmediğini kontrol eder. Rengi seçerken damlalığı zeminin iç kısmında kullan. Kenar piksellerinde saydamlık veya renk geçişi varsa temas beklediğin noktadan biraz farklı algılanabilir.

Kedi zeminin içine birkaç piksel gömülürse, değil... olana kadar tekrarla döngüsü çalışır ve kedi zeminden ayrılana kadar y konumunu 1 değiştir bloğu ile yukarı taşınır. Buradaki -1 aşağı yönde kısa yoklamayı, 1 ise zeminden çıkmak için yapılan küçük düzeltmeyi temsil eder. 12 değeri de yukarı yönlü başlangıç hızıdır.

Yukarı ok tuşunu havada basılı tutsan bile yerde mi değeri 0 olduğu için zıplama koşulu çalışmaz. Kedi zemine indikten sonra değişken 1 yapılır ve sonraki yukarı ok kontrolünde yeniden zıplayabilir.

Sağ ve sol hareketi ekleyerek platform oyunu oluştur

Sağ ve sol hareket için aynı sürekli tekrarla döngüsüne iki koşul ekleyebilirsin. x konumu yatay hareketi, y konumu ise dikey hareketi temsil eder.

eğer <sağ ok tuşuna basıldı mı?> ise
  x konumunu 5 değiştir
eğer <sol ok tuşuna basıldı mı?> ise
  x konumunu -5 değiştir

x konumunu 5 değiştir kediyi sağa, x konumunu -5 değiştir kediyi sola götürür. Bu yatay hareket blokları, zıplama ve yerçekimi bloklarından ayrı çalışır; hepsini aynı ana döngüde tutmak ise hareketlerin sırasını takip etmeyi kolaylaştırır.

Test için başlangıç platformunu yeşil renkle çiz ve biraz ilerisine daha alçak ya da daha yüksek platformlar ekle. Kedi sağ oka basınca başlangıç platformundan ilerlemeli, kenardan düştüğünde y hızıyla aşağı inmeli, yeşil yüzeye değdiğinde durmalı ve zemine indikten sonra yukarı ok ile yeniden zıplayabilmelidir.

Scratch zıplama kodundaki hataları nasıl bulursun?

Scratch zıplama kodu çalışmıyorsa blokları rastgele değiştirmek yerine sorunu dört kontrol noktasına ayırabilirsin. Kedi kuklasının doğru rengi algıladığını, zıplama koşulunun yalnızca zemindeyken çalıştığını ve y konumuyla y hızının birbirine karıştırılmadığını kontrol et.

Sorun Kontrol edilecek blok Beklenen sonuç
Kedi ekranın altına düşüyor <rengine değiyor mu?> ve eğer ... ise Renk seçicisiyle doğrudan yeşil zeminden alınan renk kullanılmalı ve koşul kedi kuklasının kodunda bulunmalı. Kedi zemine değdiğinde y hızı sıfırlanmalı.
Kedi havadayken tekrar tekrar zıplıyor Yukarı ok koşulu ile yerde olma koşulunun sırası Yukarı ok kontrolü, yeşil zemine değme koşulunun içinde çalışmalı. Böylece kedi yalnızca zemindeyken yeni bir zıplama başlatır.
Kedi konumda takılıyor veya hareket etmiyor y'yi 0 yap ve y'yi y hızı kadar değiştir y'yi 0 yap kediyi belirli bir yüksekliğe taşır. y'yi y hızı kadar değiştir ise mevcut konuma dikey hareket ekler.
Zıplama her denemede farklı başlıyor yeşil bayrak tıklandığında altında y hızı'nı 0 yap Oyun başladığında dikey hız sıfırlanır ve kedi önceki çalışmadan kalan hareketle başlamaz.

Yeşil zemin açıkça görünse bile renk algılama bloğundaki renk seçimini zeminin düz bir bölümünden yeniden yapmayı deneyebilirsin. Kedinin ayağı zemine değmeden önce ya da kedi başka bir kuklanın kodunda kontrol ediliyorsa koşul beklediğin gibi çalışmayabilir.

İlk denemede zıplama gücü için 12, yerçekimi için -1 değerlerini değiştirmeden kullan. Kedi çok yükseğe çıkıyor, kısa zıplıyor ya da zemine sert iniyorsa aynı anda iki değeri değiştirmek yerine yalnızca birini ayarla ve sonucu tekrar gözlemle.

Sık Sorulan Sorular

Scratch’te karakter havadayken neden tekrar tekrar zıplıyor?

Karakter havadayken tekrar tekrar zıplıyorsa yukarı ok koşulu büyük olasılıkla yerde olma kontrolünün dışında çalışıyordur. Yukarı ok kontrolünü, karakterin yeşil zemine değdiğini denetleyen eğer ... ise bloğunun içine yerleştir.

Scratch karakteri yeşil zemine değdiği hâlde neden aşağı düşmeye devam ediyor?

Karakter yeşil zemine değdiği hâlde düşüyorsa rengine değiyor mu? bloğunda seçilen renk zeminin gerçek rengiyle eşleşmiyor olabilir. Bloğun kedi kuklasında bulunduğunu ve zemin renginin renk seçicisiyle doğrudan zeminden alındığını kontrol et.

Scratch’te “y’yi 0 yap” ile “y’yi y hızı kadar değiştir” arasındaki fark nedir?

y’yi 0 yap karakteri doğrudan y konumu 0 olan noktaya taşır. y’yi y hızı kadar değiştir ise y hızının değerini mevcut konuma ekleyerek karakteri yukarı veya aşağı hareket ettirir.

Y hızı için 12 ve yerçekimi için -1 değerleri nasıl ayarlanır?

Önce y hızını 12, yerçekimini -1 yaparak hareketi dene. Zıplama yüksekliği veya düşüş hızı uygun değilse yalnızca bir değeri değiştirip yeniden test et.

Bu kontroller, Scratch’te zıplama kodunu parça parça inceleyerek hatanın renk algılamada mı, koşul sıralamasında mı yoksa hareket değerlerinde mi olduğunu bulmana yardımcı olur.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara