Ziehe das Objekt in die Szene. Füge einem Objekt eine Komponente hinzu. Das Objekt sollte einen Çarpıştırıcısı ve bir Sağlam vücut haben. Der Rigidbody sollte auf Kinematic gestellt sein. Das bedeutet, das Objekt bewegt sich nicht in der Physiksimulation, solange es nicht von einem Script bewegt wird.
Simüle Edilmiş'i Etkinleştirin ve Tam Kinematik Kontakları Kullanın.
Temel sınıf scriptte tanımlanır ve yerçekiminin çalışmasını sağlar. Bir bileşen olarak PhysicsObject ekleyin. Yeni Komut Dosyası'nı seçin ve Oluştur ve Ekle ile açın. Komut dosyasını çift tıklayın ve görsel düzenleyicide açın.
Fizik olduğu için, FixedUpdate işlevini ekleyin:
geçersiz Sabit Güncelleme ()
Sabit Güncelleme işlevinde, nesne yerçekimi ile aşağı doğru çekildiği için her karede aşağı doğru hareket etmelidir.
Bu nedenle hız için bir değişkene ihtiyacımız var:
korumalı Vector2 hızı;
Diğer sınıflar fiziksel nesneyi kullanır. Erişebilmelisiniz, ancak belirlenen sınıfın dışından değil.
Yerçekimi etkilenebilir: Bunun için bir gravite değeri gereklidir:
halka açık kayan nokta yerçekimiDeğiştirici = 1f;
Yerçekimi değeri Unity'nin fizik sisteminde kullanılır. Her şey Time.deltaTime ile yapılır; çarpılır ve FixedUpdate'e aittir:
hız + = yerçekimiDeğiştirici * Physics2D.gravity * Time.deltaTime;
Şimdi yerçekimi etkilerinden sonra cismin nerede olduğu tanımlanır:
vector2 deltaPosition = hız * Zaman.deltaZaman;
Yeni konum hareket için kullanılır:
Vector2 taşıma = Vector2.up * deltaPosition.y;
Başka bir işlev tanımlanır:
boşluk hareketi (Vector2 hareketi)
Şimdi, FixedUpdate'de bir ekleme yapılır: Nesne, hesaplanan değerlere göre hareket etmelidir:
Hareket ();
Bu, Rigidbody2D temelinde gerçekleşmelidir:
korumalı Rigidbody2D rb2d;
Ayrıca bir OnEnable() vardır;
rb2d = GetComponent ();
Hareket fonksiyonunda hareketin her karede gerçekleştiği belirtilir:
rb2d.position) rb2d.position + hareket;
Yerçekimi olan bir nesne için bitmiş komut dosyası şöyle görünür:
Komut dosyasını kaydedip Unity'ye geri dönerseniz, oynat düğmesine bastığınızda nesne düşer.