Menu
CoddyTech

Tekrar: Girdi Değişimi

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 47 / 56.

challenge icon

Görev

Orta

Bu baloncuk çubuğu eski Input sınıfı için yazılmıştır. Both olarak ayarlanmış bir projede çalışır, ancak bu proje yeni bir Unity 6 projesi gibi yapılandırılmıştır (Active Input Handling: Input System Package): Play düğmesine basın; ilk Input çağrısı bir InvalidOperationException hatası verir. Yaptığı her şeyi koruyarak Input System'e taşıyın:

  • Ok tuşları veya WASD, çubuğu çim üzerinde saniyede speed birim hızla hareket ettirir; çapraz giderken daha hızlı olmaz.
  • Jump tuşuna basmak, çubuğun 1.5 birim üzerinde bir baloncuk oluşturur. Jump basılı tutulurken baloncuk saniyede growRate kadar büyür ve maxSize değerine kadar ulaşır. Tuşu bıraktığınızda boyutu, örneğin Bubble: 0.8, günlüğe yazılır.
  • Sol tıklama tüm baloncukları patlatır ve sayılarını, örneğin Popped 3, günlüğe yazar.

Projenin Move ve Jump eylemlerini ve Mouse.current öğesini kullanın; betikte hiçbir Input. çağrısı bırakmayın. Play düğmesine basıp deneyin, ardından Check düğmesine basın.

Kendin dene

using UnityEngine;

public class Wand : MonoBehaviour
{
    public float speed = 4f;
    public float growRate = 1f;
    public float maxSize = 1.5f;
    public GameObject bubblePrefab;

    private Transform bubble;

    void Update()
    {
        Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
        transform.position += move.normalized * speed * Time.deltaTime;

        if (Input.GetButtonDown("Jump"))
        {
            bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
        }
        if (Input.GetButton("Jump") && bubble != null)
        {
            float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
            bubble.localScale = Vector3.one * size;
        }
        if (Input.GetButtonUp("Jump") && bubble != null)
        {
            Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
            bubble = null;
        }

        if (Input.GetMouseButtonDown(0))
        {
            GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
            foreach (GameObject b in bubbles) Destroy(b);
            Debug.Log("Popped " + bubbles.Length);
        }
    }
}

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler