Menu
CoddyTech

Ebeveynler ve Çocuklar

Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 24 / 67.

Hierarchy bölümünde, başka bir nesnenin üzerine sürüklenen nesne onun child öğesi olur ve parent öğesinin altında girintili olarak gösterilir. Bir child, parent öğesiyle birlikte hareket eder, döner ve ölçeklenir: parent öğesini hareket ettir, tüm child öğeleri de onunla birlikte gelir; child öğelerine kod eklemen gerekmez.

Unity, bir child öğesinin yerini parent öğesine göre saklar. transform.localPosition, parent öğesinden ölçülen bu uzaklıktır; transform.position ise dünyadaki konumdur. Bu Rider, bir Horse öğesinin child öğesidir ve script'i onu atın merkezinin 1 birim üstüne ve yarım birim gerisine yerleştirir; at nerede durursa dursun:

void Start()
{
    transform.localPosition = new Vector3(0, 1, -0.5f);
}

At (4, 0.5, 2) konumundayken, binicinin position değeri (4, 1.5, 1.5) olurken localPosition değeri (0, 1, -0.5) olarak kalır. At ilerlediğinde position değişir, localPosition ise değişmez. Uzaklık, parent öğesinin kendi eksenleri boyunca ölçülür; bu nedenle parent döndüğünde veya ölçeklendiğinde uzaklık da onunla birlikte döner ve ölçeklenir. Parent öğesi olmayan bir nesne için localPosition ve position aynıdır.

challenge icon

Görev

Orta

Bayrak, Gemi'nin çocuğudur ve gemi dünyanın merkezinde değildir. Bayrağın Start() metodu, bayrağı gemiye göre ölçüldüğünde 0.6 sağa ve 1 yukarı, direğin dibine koymayı amaçlar; ancak bu sayıları position konumuna yazdığı için bayrak gemiden uzağa düşer.

  • Start() metodunu, bayrak direğin dibinde başlayacak şekilde düzelt.
  • Yukarı ok tuşu basılı tutulduğunda bayrağı çek: gemiye göre ölçülen yüksekliği direğin tepesi olan 4'e ulaşana kadar saniyede climb birim yükselsin ve orada dursun.

Play'e bas, yukarı ok tuşunu basılı tut, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class Hoist : MonoBehaviour
{
    public float climb = 1f;

    void Start()
    {
        // Direğin tabanı: Ship'ten ölçüldüğünde 0.6 sağa ve 1 yukarı
        transform.position = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Yukarı ok tuşu basılı tutulurken, Ship'e göre yükseklik 4 olana kadar tırman
    }
}
quiz iconKendini test et

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