CodeBlanks Logo Icon CodeBlanks

Hareket vektörü

Eksen girdilerini bir Vector3 ile hareket vektörüne çevirmeyi öğrenirsin.

Eksenleri Vector3 ile Birleştirmek

Karakter hareketinde yatay ve dikey eksen girdileri bir Vector3 değişkeninde birleştirilir. Yatay eksen (X) sağ/sol hareketi, dikey eksen (Z) ise 3D dünyada ileri/geri hareketi belirler. Y ekseni genellikle yer çekimi ve zıplama için ayrılır.

float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 hareket = new Vector3(x, 0f, z);

Hareket Vektörünü Uygulama

Oluşturulan hareket vektörü, daha önce öğrendiğimiz transform.Translate metoduyla nesneye uygulanır. Hız değişkeniyle çarpılarak hareketin hızı ayarlanır. Böylece oyuncunun bastığı tuşlara göre nesne yumuşak bir şekilde hareket eder.

Vector3 hareket = new Vector3(x, 0f, z);
transform.Translate(hareket * hiz * Time.deltaTime);

Uygulama Hareket Vektörünü Hesapla

Input.GetAxis("Horizontal") ve Input.GetAxis("Vertical") değerlerini alıp new Vector3(yatay, 0f, dikey) ile birleştir. Sonucu Debug.Log(hareket); ile yazdır.

Başlangıç kodu

Player.cs
using System;

public struct Vector3
{
    public float x, y, z;
    public Vector3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }
    public override string ToString() => $"({x}, {y}, {z})";
}

public static class Input
{
    public static float GetAxis(string axis) => axis == "Horizontal" ? 1.0f : 2.0f;
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        // yatay ve dikey eksenleri oku, Vector3 olustur ve Debug.Log ile yazdir
    }
}

Örnek çözüm

Player.cs
using System;

public struct Vector3
{
    public float x, y, z;
    public Vector3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }
    public override string ToString() => $"({x}, {y}, {z})";
}

public static class Input
{
    public static float GetAxis(string axis) => axis == "Horizontal" ? 1.0f : 2.0f;
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        float yatay = Input.GetAxis("Horizontal");
        float dikey = Input.GetAxis("Vertical");
        Vector3 hareket = new Vector3(yatay, 0f, dikey);
        Debug.Log(hareket);
    }
}

Beklenen çıktı

(1, 0, 2)

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 3D bir oyunda zemin üzerinde ileri ve geri yürümek için Vector3 bileşenlerinden hangisi eksen girdisiyle eşleştirilir?

  • W bileşeni
  • X bileşeni
  • Y bileşeni
  • Z bileşeni Doğru cevap

Açıklama: 3D alanda X yatay (sağ-sol), Y dikey yükseklik (yukarı-aşağı), Z ise derinlik (ileri-geri) eksenidir.

2 3D Hareket Vektörü Oluştur

Soru
Vector3 hareket = new ____(yatay, 0f, dikey);
Cevap
Vector3 hareket = new Vector3(yatay, 0f, dikey);

Açıklama: X, Y ve Z bileşenlerine sahip 3 boyutlu bir vektör oluşturmak için new Vector3(...) kullanılır.

3 Vektör Bileşenleri Eşleştirmesi

Kavram Anlamı
Vector3.x Sağ ve sol yatay eksen girdisi
Vector3.y Yükseklik ve zıplama ekseni
Vector3.z İleri ve geri derinlik ekseni
transform.Translate Vektör yönünde nesneyi öteleme metodu

Başlangıç bölümündeki tüm dersler