Unity'de yeni misiniz? Oyunculardan nasıl bilgi alacağınızı ve karakterleri ekranda nasıl hareket ettireceğinizi öğrenmek mi istiyorsunuz? Unity'de oyuncu hareketini kontrol edebileceğiniz üç farklı yolu göstermek için bu kılavuzu oluşturduk.

İster kodlamada yeni olun, ister biraz deneyime sahip olun, bu C# öğreticisi sizi ayağa kaldıracak ve karakterlerinizi de onların ayaklarına basacak.

Başlayalım.

Unity'de Oyuncu Hareketi: Girdileri Toplama

Her şeyden önce, kullanıcıdan gelen girdileri nasıl yakalayacağınızı ve bunları oyun içinde harekete nasıl dönüştüreceğinizi bilmeniz gerekir. Unity, nereye bakacağınızı bildiğiniz sürece bunu oldukça kolaylaştırır.

Unity açıkken, üzerine tıklayın Düzenlemek üst araç çubuğunda. Şimdi seçin Proje ayarları. Soldaki listeden seçin Giriş Yöneticisi. Seçme eksenler, giriş değerleri listesini doldurma. bakmak isteyeceksin Yatay ve Dikey temel hareket için.

Bu eksenleri birlikte kullanacaksınız Giriş. GetAxisRaw(); sonraki bölümde temel hareket için.

Bir Rigidbody ve Çarpıştırıcı Kullanarak Unity'de Oyuncu Hareketi

instagram viewer

Artık eksenlerin adlarını bildiğinize göre, bunları oyuncu hareketini kontrol etmek için kullanabilirsiniz.

Unity projenizde hiyerarşi görüntüleyin, sağ tıklayın ve seçin 3B Nesne > Kapsül Harekete geçireceğiniz şeyi yaratmak için. Bir zemin oluşturmak için aynı taktiği kullandığınızdan emin olun. Uçak Kapsülünüzün üzerinde durması için.

sıfırladığınızdan emin olun. dönüştürmek her iki nesnenin de değerini belirleyin ve Kapsülünüzü Düzlemde duracak şekilde hareket ettirin. Kolay tanımlama için Kapsülünüzü "Oyuncu" gibi bir adla yeniden adlandırın.

İlişkili: 5 Unity Oyun Geliştirme Dili: Hangisini Öğrenmelisiniz?

Tıkla oyuncu nesne ve, içinde Müfettiş görüntüle, aşağı kaydır Bileşen Ekle. Ekle Sağlam vücutve ardından başka bir bileşen ekleyin Kapsül Çarpıştırıcısı bu zaman. Sisteminize fizik ve dolayısıyla hareket eklemek için bu bileşenlere ihtiyacınız olacak. oyuncu.

Ardından, sağ tıklayın Kodlar klasör ve Yaratmak yeni C# Komut Dosyası. Bu komut dosyasına "PlayerMovement" satırları boyunca bir ad verin. Farklı karakterler veya denetleyici türleri için birden çok hareket türü eklemeyi planlıyorsanız, her hareket türü için birçok farklı komut dosyası oluşturmak isteyeceksiniz. Şimdilik, temellere odaklanacağız ve bir komut dosyası kullanacağız.

Ayrıca bakınız: Unity'de Modüler Programlama Nedir ve Neden Önemlidir?

Açmak için komut dosyanızı çift tıklayın. Varsayılan bir Unity komut dosyasıyla karşılaşacaksınız:

Sistemi kullanarak. Koleksiyonlar;
Sistemi kullanarak. Koleksiyonlar. Genel;
UnityEngine'i kullanarak;
public class PlayerMovement: MonoBehaviour
{
// Start, ilk çerçeve güncellemesinden önce çağrılır
geçersiz Başlat()
{

}
// Güncelleme çerçeve başına bir kez çağrılır
geçersiz Güncelleme()
{

}
}

Silebilirsin Sistemi kullanarak. Koleksiyonlar; ve kullanarakSistem. Koleksiyonlar. Genel; çünkü bu komut dosyası için gerekli değiller.

Bunun dışında, odaklanın

public class PlayerMovement: MonoBehaviour {

şimdilik. Açılan küme parantezinin içinde bir halka açık şamandıra adlı değişken hız Veya benzeri. Bu hız değişken, ne kadar hızlı işlem yapacağımızı kontrol edecek bir çarpandır. oyuncu biraz daha programlamadan sonra hareket eder. Şimdilik, ayarla hız gibi bir şeye eşit 10f.

Ayrıca Unity'ye bu komut dosyasında manipüle edilecek bir Rigidbody olduğuna da izin vermelisiniz. Bu anahtar kelime ile yapılır Sağlam vücut ve bir değişken adı—seçeceğiz rb.

public class PlayerMovement: MonoBehaviour
{
genel şamandıra hızı = 10f; // Hız çarpanını kontrol eder

Sert cisim rb; // Komut dosyasına bir katı cisim olduğunu söyler, daha sonraki komut dosyasında ona başvurmak için rb değişkenini kullanabiliriz

Bu bölüme eklemeniz gereken tek şey bu. Şimdi, devam et geçersiz Başlat(). Oyuna başladıktan sonra, ayarlamanız gerekir. rb değişkene eşit Sağlam vücut üzerinde oyuncu şöyle:

geçersiz Başlat()
{
rb = GetComponent(); //rb, oynatıcıdaki katı cisme eşittir
}

Şimdi, şuna bir göz atın geçersiz Güncelleme() işlev. Bu, oyuncuların klavyelerinden, denetleyicilerinden vb. girdileri sürekli olarak almak için kullanacağınız işlevdir. Kontrol ettiğiniz zamanı hatırlayın Proje ayarları için Giriş Eksenleri? Onları burada kullanacaksın.

geçersiz Güncelleme()
{
float xMove = Giriş. GetAxisRaw("Yatay"); // d tuşu değeri 1 olarak değiştirir, bir anahtar değeri -1 olarak değiştirir
float zMove = Giriş. GetAxisRaw("Dikey"); // w tuşu değeri 1 olarak değiştirir, s tuşu değeri -1 olarak değiştirir
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * hız; // Tuşa basma (WASD) değerine eşit değer yönünde hız oluşturur. rb.velocity.y, hızı y'ye ayarlayarak düşme + zıplama ile ilgilenir.

}

Kod atlamada bunalmış hissediyorsanız endişelenmeyin; adım adım anlatacağız. İlk olarak, bir batmadan yüzmek gibi bir adla değişken xTaşıve eşit olarak ayarlayın Giriş. GetAxisRaw("Yatay");

Giriş. GetAxisRaw(); Unity'nin Player girişlerini eksenler içinde buldun Proje ayarları. Bununla ilgili daha fazla bilgiyi şurada okuyabilirsiniz: Unity'nin resmi belgeleri. "Yatay" gelen Yatay eksen Unity'de isim. Bu eksen "a" ve "d" tuşları ile sol ve sağ hareketi kontrol eder.

Muhtemelen şimdiye kadar tahmin edebileceğiniz gibi, float zMove = Giriş. GetAxisRaw("Dikey"); aynı şeyi "w" ve "s" tuşları dışında yapar.

İlişkili: Yeni Başlayanlar İçin En İyi Unity 3D Eğitimleri

Sonra, bunu koyacaksın hız Oyunda oluşturduğunuz değişkeni kullanın ve Unity'de oyuncu hareketi için yapbozun son parçasını tamamlayın.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * hız; // Tuşa basma (WASD) değerine eşit değer yönünde hız oluşturur. rb.velocity.y, hızı y'ye ayarlayarak düşme + zıplama ile ilgilenir.

Unity's'e geri dönün Müfettiş için görünüm oyuncu nesne. şuna bir göz atın Sağlam vücut-altında Bilgi, bir değer göreceksiniz Hız. Bu, hedeflediğiniz değerdir rb.hız.

yeni Vector3(xMove, rb.velocity.y, zMove) * hız, sağlanan x, y ve z değerleriyle yeni bir vektör oluşturur, ardından vektörün değerini hız.

sürüklediğinizden emin olun. Oyuncu Hareketi üzerine komut dosyası oyuncu Unity'de nesne, işte bu kadar! Toplamda, oynatıcıdan girdi alan ve bunları Unity'de karakter hareketine dönüştüren çalışan bir C# betiğiniz var.

İşte bitmiş kod:

UnityEngine'i kullanarak;
public class PlayerMovement: MonoBehaviour
{
genel şamandıra hızı = 10f; // Hız çarpanını kontrol eder
Sert cisim rb; // Komut dosyasına bir katı cisim olduğunu söyler, daha sonraki komut dosyasında ona başvurmak için rb değişkenini kullanabiliriz

// Start, ilk çerçeve güncellemesinden önce çağrılır
geçersiz Başlat()
{
rb = GetComponent(); //rb, oynatıcıdaki katı cisme eşittir
}

// Güncelleme çerçeve başına bir kez çağrılır
geçersiz Güncelleme()
{
float xMove = Giriş. GetAxisRaw("Yatay"); // d tuşu değeri 1 olarak değiştirir, bir anahtar değeri -1 olarak değiştirir
float zMove = Giriş. GetAxisRaw("Dikey"); // w tuşu değeri 1 olarak değiştirir, s tuşu değeri -1 olarak değiştirir
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * hız; // Tuşa basma (WASD) değerine eşit değer yönünde hız oluşturur. rb.velocity.y, hızı y'ye ayarlayarak düşme + zıplama ile ilgilenir.

}
}

Not: Karakterinizi her şeyden daha fazla flopping yaparken bulursanız, Oyuncunun dönüşünü Müfettiş.

Unity'de Öğrenin ve Daha Fazlasını Yapın

Artık Unity'de Rigidbody ve Collider bileşenleriyle oyuncu hareketini nasıl programlayacağınızı bildiğinize göre, bundan sonra ne öğreneceksiniz? Belki de kayma, çift zıplama ve daha fazlasını eklemek için hareket kontrol cihazınızı genişletmek eğlenceli ve ilgi çekici olabilir.

Unity Learn, oyun geliştirme becerilerinizi ilerletmek için ilginç konularla dolu. Programlama bilginizi genişletmenin en önemli faktörlerinden birinin her gün yeni bir şeyler öğrenmek olduğuna inanıyoruz. Meraklı ve mutlu kalın!

Unity Learn, Oyun Geliştirmede Ustalaşmanın En Kolay Yolu

Kendi oyunlarınızı geliştirmeye başlamak ister misiniz? Unity Learn, bilmeniz gerekenleri öğrenmenin ve ustalaşmanın en iyi ve en kolay yoludur.

Sonrakini Oku

PaylaşCıvıldamakE-posta
İlgili konular
  • Programlama
  • Oyun Geliştirme
  • Birlik
  • Programlama
Yazar hakkında
Marcus Mears III (30 Makale Yayınlandı)

Marcus, serbest çalışan bir teknoloji gazetecisi ve MUO'da Programlama için Yardımcı Editördür. Okuyucuların bilgi sahibi olmasını sağlayan düzyazı geliştirme konusunda 3 yılı aşkın deneyime sahip, yaşam boyu öğrenen, hobi sahibi bir ön uç geliştirici ve kısa öykü yazarıdır.

Marcus Mears III'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın