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