Oyuncu hareketi
- Oyun Geliştirme kursu
- İleri seviye
- Ders 50/71
- 4 dk
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
using UnityEngine;
public class PlayerMovementTester : MonoBehaviour
{
// Start icinde speed tanimla ve yazdir
}Örnek çözüm
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
transform.____(move * speed * Time.deltaTime);
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ı |