Vector3 Bir Yapıdır
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 22 / 67.
Vector3 bir struct'tır; C# öğrenme sürecinde ele alınmayan bir türdür. Bir struct, int gibi bir değerdir: atandığında tamamı kopyalanır. Vector3 b = a; b.x = 9; işleminden sonra a.x değişmeden kalır, çünkü b ayrı bir kopyadır. (Bir class ise bunun tersidir: iki değişken aynı paylaşılan nesneyi gösterebilir.)
transform.position bir özelliktir ve okunduğunda konumun bir kopyasını verir. Bu nedenle transform.position.x = 0; hemen atılacak bir kopyayı değiştirirdi ve C# bunun derlenmesine izin vermez: error CS1612: Cannot modify the return value of 'Transform.position' because it is not a variable. Çözüm, konumu kopyalamak, kopyayı değiştirmek ve tekrar atamaktır. Bu runner, Space'e basıldığında orta şeride döner:
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 p = transform.position; // kopyala
p.x = 0; // kopyayı değiştir
transform.position = p; // geri ata
}Son satırı çıkarırsan kod derlenir, ancak hiçbir şey hareket etmez: yalnızca kopya değişmiştir. transform.localScale ve diğer Vector3 özellikleri de aynı şekilde çalışır.
Görev
KolayKızak saniyede fall birim hızla düşer ve oklar onu x ekseni boyunca kaydırır. İki satır, onu yerde tutmalı (y hiçbir zaman 0.5'in altına düşmemeli) ve duvarların arasında tutmalı (x -4 ile 4 arasında), ancak betik derlenmiyor.
Hataları görmek için Play düğmesine bas. Konumun bir kopyası üzerinde çalışarak yaptıkları şeyi koruyup bu iki satırı düzelt, ardından Check düğmesine bas.
Kendin dene
using UnityEngine;
public class Sled : MonoBehaviour
{
public float speed = 4f;
public float fall = 3f;
void Update()
{
float h = Input.GetAxisRaw("Horizontal");
transform.position += new Vector3(h * speed, -fall, 0) * Time.deltaTime;
// Kızağı zeminde ve duvarların arasında tut.
transform.position.y = Mathf.Max(transform.position.y, 0.5f);
transform.position.x = Mathf.Clamp(transform.position.x, -4f, 4f);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1İlk Betiğiniz
Merhaba, UnityKüpü YerleştirHer Karede Hareket EtHer Saniye DönTuşlarla Yön VerÖzet: Küpü Sür4Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir YapıdırÖzet: Drone Pilotu7Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız5Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarÖlçekNesnelere BakışBir Noktaya Doğru HareketTekrar: Yörüngedeki Ay6GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBir Bileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı