CodeBlanks Logo Icon CodeBlanks

Oyuncu hareketi

Oyuncu hareket scriptini adım adım yazarsın.

Oyuncu Hareketi ve Girdi Okuma

Oyuncuyu hareket ettirmek için ilk adım klavye veya oyun kolundan gelen yön girdilerini okumaktır. Input.GetAxis("Horizontal") ve Input.GetAxis("Vertical") fonksiyonları -1.0 ile +1.0 arasında yumuşak değerler döner.

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

Elde edilen bu değerler 3 boyutlu bir hareket vektörüne (Vector3) dönüştürülür.

Hareketi Uygulama ve Time.deltaTime

Hareketin bilgisayar hızından bağımsız (frame-rate independent) olması için hareket vektörü Time.deltaTime ile çarpılmalıdır. Ardından transform.Translate ile karakter konumlandırılır.

void Update() {
    float x = Input.GetAxis("Horizontal");
    Vector3 move = new Vector3(x, 0, 0);
    transform.Translate(move * speed * Time.deltaTime);
}

Bu çarpım sayesinde oyun ister 30 FPS ister 144 FPS çalışsın, karakter saniyede tam olarak belirlenen metre kadar yol alır.

Uygulama Oyuncu hız kontrolü

Bir Start metodu tanımla. İçinde float speed = 5.0f; tanımla ve konsola "Oyuncu hizi: " + speed yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class PlayerMovementTester : MonoBehaviour
{
    // Start icinde speed tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class PlayerMovementTester : MonoBehaviour
{
    void Start()
    {
        float speed = 5.0f;
        Debug.Log("Oyuncu hizi: " + speed);
    }
}

Beklenen çıktı

Oyuncu hizi: 5

Soru ve cevaplar

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

1 Unity'de yatay hareket girdisini (-1.0 ile +1.0 arasında) okumak için hangi girdi ekseni adı kullanılır?

  • Jump
  • Fire1
  • Horizontal Doğru cevap
  • Mouse X

Açıklama: Unity Input Manager'da varsayılan yatay eksen 'Horizontal' adıyla tanımlıdır ve A/D veya sol/sağ ok tuşlarını okur.

2 Karakter öteleme hareketi

Soru
transform.____(move * speed * Time.deltaTime);
Cevap
transform.Translate(move * speed * Time.deltaTime);

Açıklama: Bir nesneyi yön vektörü doğrultusunda ötelemek için Transform üzerindeki 'Translate' metodu kullanılır.

3 Hareket bileşen kavramları

Kavram Anlamı
Input.GetAxis Klavye veya joystick eksen girdisi okur
Vector3 3 boyutlu uzayda yön ve konum vektörü
Time.deltaTime İki kare arasında geçen süre
speed Karakterin yürüme hızı çarpanı

İleri seviye bölümündeki tüm dersler