Menu
CoddyTech

Yuvarlanan Top

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 27 / 63.

Bu bölümde Coin Rush adlı küçük bir oyun oluşturacağız. Duvarlarla çevrili bir arenada topu ok tuşlarıyla yuvarlayacak ve süre dolmadan paraları toplayacaksın. Unity projesinde olacağı gibi, işleri iki betik paylaşır: Ball topu hareket ettirir, skoru ve süreyi takip eder; Coin ise her paranın üzerinde bulunur. Coin.cs başlangıçta boş bir sınıftır; sonraki derste içini dolduracağız.

Bir topu olduğu yere yerleştirmek yerine ittiğinde yuvarlanır. Rigidbody'sini AddForce ile it ve dönme hareketini serbest bırak: kuvvet topu hareket ettirir, zeminin sürtünmesi topun alt kısmını kavrayıp döndürür. Space basılı tutulurken bu bowling topu kendi kulvarında yuvarlanır:

public float push = 6f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

Kaymadan yuvarlanan bir top, hızının yarıçapına bölümü kadar döner. Bu nedenle yarıçapı 0.5 olan ve saniyede 3 birim hareket eden bir top, saniyede 6 radyan hızla döner (rb.angularVelocity). Bunun yerine transform.position değerini değiştirir ya da Rigidbody'nin Constraints bölümünde dönmeyi dondurursan top, dönmeden bir disk hokeyi diski gibi kayar. Tek renkli, sade bir küre her iki durumda da aynı görünür: yuvarlanmayı görmek için oyun çalışırken Rigidbody'nin Info bölümündeki Angular Velocity değerini izle.

challenge icon

Görev

Orta

Coin Rush oyununu topla başlat. Inspector, Ball nesnesine 10 force değeri verir.

  • Start() içinde topun Rigidbody bileşenini rb içine kaydet.
  • FixedUpdate() içinde topu ok tuşlarıyla hareket ettir: x ekseninde Input.GetAxis("Horizontal") ve z ekseninde Input.GetAxis("Vertical"), her ikisini de force ile çarp.
  • Dönüşünü serbest bırak ki yuvarlansın.

Şimdilik Coin.cs dosyasını olduğu gibi bırak. Play düğmesine bas, oyuna tıkla ve arenada yuvarlan, ardından Check düğmesine bas.

Kendin dene

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // Topu ok tuşlarıyla it: Horizontal x ekseni boyunca, Vertical z ekseni boyunca.
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fizik ve Oynanış bölümündeki tüm dersler