Unity - Temel Hareket Komut Dosyası
Bu derste, gameObject'i kullanıcının girdisine göre yukarı, aşağı, sola ve sağa hareket ettiren bir kod yazacağız. Bu, Unity komut dosyası yazmanın iş akışını daha kolay anlamamıza yardımcı olacaktır.
Her GameObject'in en az bir bileşeni olduğunu unutmayın - Transform. Özel olan şey, bir gameObject dönüşümünün, Unity'nin komut dosyası tarafında da değişkenler olarak görünmesidir, böylece onu kod aracılığıyla değiştirebiliriz. Bu da Dönüşüm ile sınırlı değildir; Unity'deki tüm bileşenlerin, komut dosyasındaki değişkenler aracılığıyla erişilebilen özellikleri vardır.
Hareket senaryomuzla başlayalım. Yeni bir komut dosyası oluşturun ve "Hareket" olarak adlandırın.
Şimdi, senaryoyu açın ve son derste gördüğünüz şeyleri görmelisiniz.
Adlı bir public float değişken oluşturalım speed. Değişken yapmakpublic Unity'nin büyük bir avantajı var -
Değişken, düzenleyicinin içinde değiştirilebilir bir alan olarak görünür, bu nedenle koddaki değerleri manuel olarak ayarlamanız gerekmez.
public class Movement : MonoBehaviour {
public float speed;
}
Bu betiği diğer yöntemlere dokunmadan kaydedersek Unity'de derlenmelidir.
(Ne zaman derlendiğini
Sonraki, drag and dropAssets'ten GameObject'e komut dosyası. Doğru yaparsanız, GameObject'in özelliklerinde görmeniz gereken şey budur -
Hız değeri ayarlanabilir olduğundan ve her zaman kodda değiştirilmesi gerekmediğinden, start () yerine update () yöntemini kullanabiliriz.
Şimdi Güncelleme yönteminin hedeflerini ele alalım -
Kullanıcı girdisini kontrol edin.
Bir kullanıcı girişi varsa, giriş yönlerini okuyun.
Nesnenin dönüşümünün konum değerlerini hızına ve yönüne göre değiştirin. Bunu yapmak için aşağıdaki kodu ekleyeceğiz -
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
gameObject.transform.position = new Vector2 (transform.position.x + (h * speed),
transform.position.y + (v * speed));
Şimdi kodu breif olarak tartışalım.
Her şeyden önce, adında bir kayan nokta değişkeni yapıyoruz h (yatay için) ve değeri, Input.GetAxisRawyöntem. Bu yöntem, oynatıcının yukarı / aşağı / sol / sağ oklarda hangi tuşa bastığına bağlı olarak -1, 0 veya 1 döndürür.
Input sınıfı, kullanıcıdan tuşlara basma, fare girişi, denetleyici girişi vb. Şeklinde girdi almaktan sorumludur. GetAxisRaw yöntemini anlamak biraz daha zordur, bu yüzden buna daha sonra geri döneceğiz.
Sonra biz updating gameObject'imizin konumunu yeni bir pozisyon oluşturarak tanımlanan yeni bir konuma Vector2. Vector2, 2 parametre alır;x and ydeğerler sırasıyla. X değeri için nesnenin toplamını sağlıyoruzcurrent pozisyon ve onun speed, tuşa basılan her karede etkin bir şekilde bir miktar ekleyerek konumuna getirin.
Bu betiği kaydedin ve Unity'ye geri dönün. Unity, başarılı bir şekilde derlendikten sonra tüm komut dosyalarını otomatik olarak güncelleyecektir, böylece betiği tekrar tekrar eklemeniz gerekmez.
Artık işiniz bittiğine göre, speedGameObject'in özelliklerinde 0.8 demek. Bu önemlidir çünkü daha yüksek bir değer oyuncunun çok hızlı hareket etmesine neden olur.
Şimdi tıklayın Play ve ilk küçük oyununuzu çalışırken görün!
Ok tuşlarına basmayı ve etrafta dolaşmayı deneyin. Oyunu durdurmak için tekrar Oynat'a basmanız yeterlidir. Hatta hızı gerçek zamanlı olarak bile ayarlayabilirsiniz, böylece her zaman durup başlatmak zorunda kalmazsınız.
Bir sonraki derste, katı cisimler ve çarpışmalar hakkında bilgi edineceğiz.