Menu
CoddyTech

Nesneler Arasındaki Mesafe

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

Vector3.Distance(a, b), üç eksenin tamamı boyunca düz bir çizgi üzerinden ölçülen, iki nokta arasındaki mesafeyi birim cinsinden verir. Bu, aralarındaki adımın uzunluğudur: (a - b).magnitude; dolayısıyla a ile b'nin sırası önemli değildir. (0, 0, 0) ile (3, 0, 4) arasındaki mesafe 5'tir.

Bir mesafeyi bir sayıyla karşılaştırdığında, komut dosyası bir şeyin ne zaman yakında olduğunu bilir. Bu kampçı, yalnızca konumunu Inspector'ın belirlediği kamp ateşine 4 birim mesafedeyken ellerini ısıtabilir:

public Vector3 campfire = new Vector3(3, 0, 4);

void Update()
{
    float d = Vector3.Distance(transform.position, campfire);
    if (d < 4f && Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log("You warm your hands");
    }
}

Mesafe yüksekliği de hesaba katar: ateşin 5 birim üstündeki bir kampçı ateşten 0 değil, 5 birim uzaktadır. Yüksekliğin hesaba katılmaması gerektiğinde, y değerleri aynı olan iki noktayı karşılaştır.

challenge icon

Görev

Kolay

Yürüyücü bataklığı geçer. Bataklığın merkezinden 3 birim uzaklığa kadar, Inspector'da ayarlanan swamp alanında, speed değerinin yarısı kadar hızla hareket eder; daha uzakta tam hızla hareket eder. Hareket kodu yazılmıştır: her karede kullanılacak hızı hesapla ve speed alanını değiştirmeden bırak.

Play düğmesine basıp bataklığın içinden yürü, ardından Check düğmesine bas.

Kendin dene

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;
    public Vector3 swamp = new Vector3(0, 0.5f, 0);

    void Update()
    {
        float s = speed;
        // Bataklığa 3 birim mesafedeyken yarı hızla hareket et.

        Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        transform.position += direction.normalized * s * Time.deltaTime;
    }
}
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