Hareket vektörü
- Oyun Geliştirme kursu
- Başlangıç
- Ders 47/83
- 4 dk
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
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
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
Vector3 hareket = new ____(yatay, 0f, dikey);
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 |