Gamepad desteği
- Oyun Geliştirme kursu
- İleri seviye
- Ders 59/71
- 4 dk
Gamepad ile çalışacak bağlamaları öğrenirsin.
Gamepad bağlamaları
Yeni Input System'de her cihaz aynı yol biçimini kullanır: <Gamepad>/leftStick, <Gamepad>/buttonSouth. Bir eyleme hem klavye hem gamepad bağlaması ekleyebilirsin; eylem hangi cihaz kullanılırsa kullanılsın aynı şekilde tetiklenir. Düğme adları Xbox düzenine göredir: buttonSouth A/Cross, buttonWest X/Square düğmesidir.
moveAction.AddBinding("<Gamepad>/leftStick");
moveAction.AddBinding("<Keyboard>/arrowKeys");
Debug.Log("Iki cihaz baglandi");Kontrol düzeni
Bir Input Action asset'inde her cihaz seti için bir kontrol düzeni tanımlanır; örneğin Keyboard&Mouse ve Gamepad. Her bağlama bir ya da birden çok gruba atanır. PlayerInput bileşeni SwitchCurrentControlScheme ile etkin düzeni değiştirebilir.
playerInput.SwitchCurrentControlScheme("Gamepad", Gamepad.current);
Debug.Log("Duzen degisti");Böylece oyun hangi tuş göstergelerini basacağını bilir.
Uygulama Move eylemini iki cihaza bağla
GamepadDestek adında bir MonoBehaviour yaz. Start içinde adı Move, türü InputActionType.Value olan bir InputAction oluştur. AddCompositeBinding("2DVector") ile başlayan zincirde With çağrılarıyla tuşları bağla: Up için <Keyboard>/w, Down için <Keyboard>/s, Left için <Keyboard>/a, Right için <Keyboard>/d. Sonra move.AddBinding("<Gamepad>/leftStick") ile sol çubuğu ekle, move.Enable() çağır ve Debug.Log("Move hazir") yazdır.
Başlangıç kodu
using UnityEngine;
using UnityEngine.InputSystem;
public class GamepadDestek : MonoBehaviour
{
void Start()
{
// Move adinda, tipi Value olan bir InputAction olustur
// 2DVector bileseniyle W, A, S, D tuslarini bagla
// sol analog cubugu ayri bir baglama olarak ekle
// eylemi etkinlestir ve hazirlik mesajini yazdir
}
}Örnek çözüm
using UnityEngine;
using UnityEngine.InputSystem;
public class GamepadDestek : MonoBehaviour
{
void Start()
{
InputAction move = new InputAction(name: "Move", type: InputActionType.Value);
move.AddCompositeBinding("2DVector")
.With("Up", "<Keyboard>/w")
.With("Down", "<Keyboard>/s")
.With("Left", "<Keyboard>/a")
.With("Right", "<Keyboard>/d");
move.AddBinding("<Gamepad>/leftStick");
move.Enable();
Debug.Log("Move hazir");
}
}Beklenen çıktı
Move hazir
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Gamepad'de sol analog çubuğun yolu nedir?
- <Gamepad>/buttonEast
- <Gamepad>/dpad
- <Gamepad>/leftTrigger
- <Gamepad>/leftStick Doğru cevap
Açıklama: Sol analog çubuk leftStick'tir; leftTrigger sol tetik, buttonEast B/Circle düğmesi, dpad ise yön tuşlarıdır.
2 A düğmesini bağla
jumpAction.AddBinding("<Gamepad>/button____");
jumpAction.AddBinding("<Gamepad>/buttonSouth");
Açıklama: Xbox düzeninde A/Cross düğmesi buttonSouth adını taşır; buttonEast B/Circle, buttonWest X/Square düğmesidir.
3 Gamepad terimleri
| Kavram | Anlamı |
|---|---|
buttonWest |
X/Square düğmesi |
leftTrigger |
Sol tetik düğmesi |
Control Scheme |
Cihaz setine göre tuş düzeni |
SwitchCurrentControlScheme |
Etkin düzeni değiştirme |