• 16.06.2021
  • 1125
  • Oyun Nesneleri, Unity Game ObjectYazılı Ders

Oyun Nesneleri, Unity Game Object

Unity, modelleme yazılımı ile oluşturulabilen herhangi bir şeklin 3D modelleri ile çalışabilir. Bununla birlikte, doğrudan Unity içinde oluşturulabilen bir dizi ilkel nesne türü de vardır, bunlar Cube , Sphere , Capsule , Cylinder , Plane ve Quad . Bu nesneler genellikle kendi başlarına faydalıdır (örneğin, bir düzlem genellikle düz bir zemin yüzeyi olarak kullanılır), ancak aynı zamanda test amacıyla yer tutucular ve prototipler oluşturmak için hızlı bir yol sunarlar. GameObject > 3D Object menüsündeki uygun öğe kullanılarak, ilkel öğelerden herhangi biri sahneye eklenebilir .

Küp / Cube

Bu, kenarları bir birim uzunluğunda, dokulu basit bir küptür, böylece görüntü altı yüzün her birinde tekrarlanır. Mevcut haliyle, bir küp çoğu oyunda çok yaygın bir nesne değildir, ancak ölçeklendiğinde duvarlar, direkler, kutular, basamaklar ve diğer benzer öğeler için çok kullanışlıdır. Ayrıca, programcıların, henüz tamamlanmış bir model olmadığında geliştirme sırasında kullanmaları için kullanışlı bir yer tutucu nesnedir. Örneğin, bir araba gövdesi kabaca doğru boyutlarda uzun bir kutu kullanılarak kabaca modellenebilir. Bu, bitmiş oyun için uygun olmasa da, arabanın kontrol kodunu test etmek için basit bir temsili nesne olarak iyidir. Bir küpün kenarları bir birim uzunluğunda olduğundan, yakınına bir küp ekleyerek ve boyutları karşılaştırarak sahneye aktarılan bir ağın oranlarını kontrol edebilirsiniz.

Küre / Sphere

Bu, birim çaplı (yani 0,5 birim yarıçaplı) bir küredir, dokuludur, böylece tüm görüntü, üst ve alt kutuplarda "sıkıştırılmış" olarak bir kez etrafına sarılır. Küreler, topları, gezegenleri ve mermileri temsil etmek için açıkça yararlıdır, ancak yarı saydam bir küre, bir efektin yarıçapını temsil etmek için güzel bir GUI cihazı da yapabilir.

Kapsül / Capsule

Kapsül, uçlarında yarım küre şeklinde kapakları olan bir silindirdir. Nesne bir birim çapında ve iki birim yüksekliğindedir (gövde bir birimdir ve iki kapak her biri yarım birimdir). Görüntü tam olarak bir kez sarılacak ve her yarım kürenin tepesinde sıkıştırılacak şekilde dokulu. Bu şekle sahip pek çok gerçek dünya nesnesi olmasa da, kapsül prototipleme için kullanışlı bir yer tutucudur. Özellikle, yuvarlak bir nesnenin fiziği, belirli görevler için bazen bir kutununkinden daha iyidir.

Silindir / Cylinder

Bu, iki birim yüksekliğinde ve bir birim çapında olan basit bir silindirdir, dokuludur, böylece görüntü gövdenin tüp şeklini bir kez sarar, ancak aynı zamanda iki düz, dairesel uçta ayrı olarak görünür. Silindirler direkler, çubuklar ve tekerlekler oluşturmak için çok kullanışlıdır ancak çarpıştırıcının şeklinin aslında bir kapsül olduğunu unutmamalısınız (Unity'de ilkel silindir çarpıştırıcısı yoktur). Fizik amaçları için doğru bir silindirik çarpıştırıcıya ihtiyacınız varsa, bir modelleme programında uygun şekle sahip bir ağ oluşturmalı ve bir kafes çarpıştırıcı eklemelisiniz.

Plane / Zemin

Bu, yerel koordinat uzayının XZ düzleminde yönlendirilmiş on birim uzunluğunda kenarları olan düz bir karedir. Tüm görüntünün kare içinde tam olarak bir kez görünmesi için dokuludur. Düzlem, zeminler ve duvarlar gibi çoğu düz yüzey türü için kullanışlıdır. Bazen görüntüleri veya filmleri GUI'de ve özel efektlerde göstermek için bir yüzeye de ihtiyaç duyulur. Bunun gibi şeyler için bir düzlem kullanılabilse de, daha basit dörtlü ilkel genellikle göreve daha doğal bir uyum sağlar.

Quad / Dörtgen

Bu, yerel koordinat uzayının XZ düzleminde yönlendirilmiş on birim uzunluğunda kenarları olan düz bir karedir. Tüm görüntünün kare içinde tam olarak bir kez görünmesi için dokuludur. Düzlem, zeminler ve duvarlar gibi çoğu düz yüzey türü için kullanışlıdır. Bazen görüntüleri veya filmleri GUI'de ve özel efektlerde göstermek için bir yüzeye de ihtiyaç duyulur. Bunun gibi şeyler için bir düzlem kullanılDörtlü ilkel düzleme benzer, ancak kenarları yalnızca bir birim uzunluğundadır ve yüzey, yerel koordinat uzayının XY düzleminde yönlendirilir. Ayrıca, bir dörtlü sadece iki üçgene bölünürken, düzlem iki yüz içerir. Dörtlü, bir sahne nesnesinin yalnızca bir görüntü veya film için görüntüleme ekranı olarak kullanılması gerektiği durumlarda kullanışlıdır. Basit GUI ve bilgi ekranları, uzaktan görüntülenen katı nesnelerin yerini alan parçacıklar, hareketli grafikler ve "sahtekar" görüntüler gibi dörtlü ile uygulanabilir.abilse de, daha basit dörtlü ilkel genellikle göreve daha doğal bir uyum sağlar.

 

Nesneye hitap etmek Find

// isim ile ulaşmak
        GameObject.Find("elma")
//tag ile ulaşmak
        Gameobject.FindGameobjectWithTag("kup")
//aynı taga sahip tüm nesnelere ulaşmak için s harfi eklenir. Sonuç olarak bir dizi nesne döndürür.
        GameObject.FindGameObjectsWithTag("Cube")

 

Nesneyi taşımak Translate

Artırma yaparak işlem yapar

// en basit kullanımı; üç parametre alır x,y,z değerleri (6 farklı kullanımı var)
        GameObject kupum=GameObject.Find("Cube");
        kupum.transform.Translate(0, 4, 0);

 

Nesnenin konumunu değiştirmek position 

yöntem gibi kullanılamaz o yüzden atama şeklinde kullanılır.

// üç parametreli Vector3 değişkeni ile değerler atanır x,y,z değerleri
        GameObject kupum=GameObject.Find("Cube");
        kupum.transform.position = new Vector3(0, 5, 0);

 

Nesnenin açısını değiştirmek Rotate

Ekleme yaparak döndürme yapar

// üç parametreli x açısı,y açısı,z açısı değerleri (6 farklı kullanımı var)
        GameObject kupum=GameObject.Find("Cube");
        kupum.transform.Rotate(0, 0, -45);

 

Nesnenin açısını atamak rotation

Ekleme değil atama yapar

// yöntem gibi kullanılamaz o yüzden atama şeklinde kullanılır.

        GameObject kupum=GameObject.Find("Cube");
//kuaterniyon, dönüşü temsil etmek için kullanılır
        kupum.transform.rotation = Quaternion.Euler(45, 45, 45);

 

İki nokta arası doğrusal hareket Vector3.Lerp

İki konum arası süreli geçiş

void Update()
    {
// yumuşatma var. ivmeli ilerler
        transform.position = Vector3.Lerp(transform.position, new Vector3(13, 1, 122), speed * Time.deltaTime);
// sabit hız için Vector3.MoveTowards kullanılır
//belirtilen noktaya ivmeli, yavaşça ilerler
//update fonkiyonun tetiklenmeye devam eder ama noktaya ulaşılınca Vector3.Lerp bekler
}

 

İki açı arası döndürme Quaternion.Lerp

İki konum arası süreli geçiş

  void Update()
    {
        transform.rotation = Quaternion.Lerp(transform.rotation,Quaternion.Euler (0,45,0), 1.0f * Time.deltaTime);
        //y açısını 45 dereceye ivmeli ve yavaşça döndürür ve durur
        //update fonkiyonun tetiklenmeye devam eder ama açıya ulaşılınca Quaternion.Lerp bekler
    }

 

Nesnenin bileşenlerine ulaşmak GetComponent

// örnek olarak rengini değiştirelim
        GameObject kupum=GameObject.Find("Cube");
        kupum.GetComponent < renderer > ().material.color = Color.green;
//boşlukları kaldırınız

//ışık özelliğine ulaşalım
        GameObject gunes = GameObject.Find("sun");
        gunes.GetComponent < light > ().intensity = 3;

 

Metin objesine ulaşmak GetComponent < Text >

Text textObject = GameObject.Find(textObjectName)?.GetComponent < Text >();

        if (textObject != null)
        {
            // Text objesi bulundu, burada istediğiniz işlemi yapabilirsiniz
            Debug.Log("Text objesi bulundu: " + textObject.text);
        }
        else
        {
            // Text objesi bulunamadı
            Debug.Log("Text objesi bulunamadı: " + textObjectName);
        }
 

 

TextMeshPro objesine ulaşmak TextMeshProUGUI

TextMeshProUGUI metin;
        metin = GameObject.Find("Head Text")?.GetComponent < TextMeshProUGUI > ();
 

 

Nesnenin kodlarına ulaşmak GetComponent

// örnek olarak script nesnesindeki ekle scriptine ulaşalım
        GameObject kodum = GameObject.Find("script");
        kodum.GetComponent < ekle > ().width = 55;
//boşlukları kaldırınız

//scriptlerde component olduğu için yine GetComponent ile ulaşım sağladık
//veya scriptin adı GemaManager olsun
         GameManager yonet;
    void Start()
    {
        yonet = GameObject.Find("GameManager").GetComponent < gamemanager > ();
        yonet.deger = 10;
    }        

 

Nesnenin kodlarına ulaşmak 2.yol

Bu yöntemin çalışması için göstermeniz gerekir.

// GameObject kullanırsanız bu şekilde
    public GameObject Ekle;
    void Start()
    {
    Ekle.GetComponent < ekle > ().width = 55;
 //boşlukları kaldırınız  

 

Nesnenin kodlarına ulaşmak 3.yol

// örnek olarak script nesnesindeki ekle scriptine ulaşalım
        public ekle Ekle;
    void Start()
    {
        Ekle.width = 55;
 //yine 2.yoldaki gibi gösterme işlemi yapılmalıdır

 

Nesnenin kodlarına ulaşmak 4.yol

// örnek olarak script adı JoystickButon olsun
        JoystickButon joystickButon;
    void Start()
    {
        joystickButon = FindObjectOfType < joystickbuton > ();
 //FindObjectOfType kullanımı

 

Nesneyi yok etmek Destroy

// Nesne yüklendikten 5 saniye sonra oyun nesnesini yok eder, saniye isteğe bağlıdır
        Destroy(gameObject, 5);
//kısa kullanım
        Destroy(gameObject);
//veya
        Destroy(this);

 

Nesnelerin çarpışması OnCollisionEnter

void OnCollisionEnter(Collision collisionInfo)
    {
        print(gameObject.name + " ve " + collisionInfo.collider.name + " arasında çarpışma algılandı.");
        // Destroy(gameObject);
        // Destroy(this.gameObject);
        if (collisionInfo.gameObject.name !="Plane")
        Destroy(collisionInfo.gameObject);
    }

 

Nesneyi kolanlamak Instantiate

Nesneyi klonlamak için prefab yapmak gerekli. Nesneyi tutup hiyerercyden projecte sürükleyerek prefab oluşturun.

Daha sonra prefabı ismini kullanarak klonlayın.

           public GameObject explosion;
           //Instantiate( Nesne adı,konum, açısı )
           Instantiate(explosion, transform.position, transform.rotation);

Buradaki kodlarda explosion ile tanımlanan nesneyi göstermek gerekir

 

 

 

 

YORUM YAP