Mobil Keyboard
2D

Input Unity XR

Bagian ini dari Panduan Pengguna Unity memberikan informasi tentang semua perangkat input yang didukung Unity untuk realitas virtual, realitas augmented, dan aplikasi Windows Mixed Reality. Halaman ini mencakup topik berikut:

Platform XR memiliki berbagai fitur input yang kaya yang dapat Anda manfaatkan ketika Anda merancang interaksi pengguna. Aplikasi Anda dapat menggunakan data spesifik yang merujuk posisi, rotasi, sentuh, tombol, joystick, dan sensor jari. Namun, akses ke fitur input ini dapat bervariasi di antara platform. Misalnya, ada perbedaan kecil antara Rift Vive dan Oculus, tetapi platform desktop VR-enabled dan platform mobile seperti Daydream berbeda banyak lagi.

Unity menyediakan C # struct yang disebut InputFeatureUsage, yang menentukan set standar kontrol perangkat fisik (seperti tombol dan pemicu) untuk mengakses input pengguna pada platform apa pun. Ini membantu Anda mengidentifikasi jenis input dengan nama. Lihat XR.Input.CommonUsages untuk definisi setiap InputFeatureUsage.

Setiap InputFeatureUsage sesuai dengan aksi atau jenis input umum. Misalnya, Unity mendefinisikan InputFeatureUsage yang disebut trigger sebagai input sumbu tunggal yang kontrol jari indeks, terlepas dari platform XR yang Anda gunakan. Anda dapat menggunakan InputFeatureUsage untuk mendapatkan state trigger menggunakan namanya, sehingga Anda tidak perlu mengatur sumbu (atau tombol pada beberapa platform XR) untuk sistem Input Unity konvensional.

Pemetaan input XR

Tabel berikut daftar nama pengontrol standar InputFeatureUsage dan bagaimana peta ke pengontrol sistem XR populer:

InputFeatureUsage Feature type Legacy input index (kontroler kiri / pengontrol kanan) WMR Oculus GearVR Daydream OpenVR (Full) Vive Oculus via OpenVR WMR via OpenVR Magic Leap
primary2DAxis 2D sumbu [(1,2)/(4,5)] Touchpad Joystick Touchpad Touchpad Trackpad/Joystick Trackpad Joystick Joystick Touchpad
trigger Axis [9/10] Trigger Trigger Trigger Trigger Trigger Trigger Trigger Trigger Trigger
grip Axis [11/12] Grip Grip Bumper Grip Grip Grip Grip Bumper
sekunder2DAxis 2D sumbu [(17,18)/(19,20)] Joystick Touchpad
sekunder2DAxisClick Button [18/19] Joystick - Klik
primaryButton Button [2/0] [X/A] - Press App Primary Tombol primer (tombol lepas)(1) Primer (Y / B) Menu Menu
primaryTouch Button [12/10] [X/A] - Sentuh
secondaryButton Button [1] [Y/B] - Press Alternate Alternate (X/A)
secondaryTouch Button [13/11] [Y/B] - Sentuh
gripButton Button [4/5] Basket Basket Basket Basket Basket Basket Bumper - Press
Login Login Button [14/15] Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Press Trigger - Touch Trigger - Press Trigger - Press
menuButton Button [6/7] Menu Mulai (hanya pengontrol kiri)
primary2DAxisClick Button [8/9] Touchpad - Klik WordPress.org WordPress.org WordPress.org Trackpad/Joystick - Press Trackpad - Press Joystick - Press WordPress.org
primary2DAxisTouch Button [16] Touchpad - Sentuh WordPress.org Touchpad - Sentuh Touchpad - Sentuh Trackpad/Joystick - Sentuh Trackpad - Sentuh Joystick - Touch Touchpad - Sentuh Touchpad - Sentuh
Login Login Axis Tingkat baterai
Login Sitemap Button Kehadiran pengguna Kehadiran pengguna

(1) Tombol sandwich mengacu pada tombol menu Vive. Tombol ini dipetakan ke primerButton, daripada menuButton, untuk menangani aplikasi lintas platform yang lebih baik.

Lihat XR.Input.CommonUsages untuk definisi setiap InputFeatureUsage.

Mengakses perangkat input

Sebuah InputDevice mewakili perangkat fisik, seperti pengontrol, ponsel, atau headset. Ini dapat berisi informasi tentang pelacakan perangkat, tombol, joysticks, dan kontrol input lainnya. Untuk informasi lebih lanjut tentang API InputDevice, lihat dokumentasi pada InputDevice.

Gunakan kelas XR.InputDevices untuk mengakses perangkat input yang saat ini terhubung ke sistem XR. Untuk mendapatkan daftar semua perangkat yang terhubung, gunakan InputDevices.GetDevices:

var inputDevices = new List<UnityEngine.XR.InputDevice>();
UnityEngine.XR.InputDevices.GetDevices(inputDevices);

foreach (var device in inputDevices)
{
    Debug.Log(string.Format("Device found with name '{0}' and role '{1}'", device.name, device.role.ToString()));
}

Perangkat input tetap berlaku pada bingkai sampai sistem XR memutuskannya. Gunakan properti InputDevice.IsValid untuk menentukan apakah InputDevice masih mewakili pengontrol aktif.

Anda dapat mengakses perangkat input dengan:

  • Characteristics
  • Role
  • XR node

Mengakses perangkat input dengan karakteristik

Karakteristik perangkat menggambarkan apa perangkat yang mampu, atau apa yang digunakan untuk (misalnya, apakah itu dipasang kepala). Datasheet adalah serangkaian bendera yang dapat Anda tambahkan ke kode Anda untuk mencari perangkat yang sesuai dengan spesifikasi tertentu. Anda dapat menyaring perangkat dengan karakteristik berikut:

Device Characteristic
HeadMounted Perangkat melekat pada kepala pengguna. Ini memiliki pelacakan perangkat dan pelacakan mata pusat. Bendera ini paling umum digunakan untuk mengidentifikasi tampilan yang dipasang di kepala (HMDs).
KameraKomponen yang menciptakan gambar sudut pandang tertentu di tempat kejadian Anda. Output ditarik ke layar atau ditangkap sebagai tekstur. More info
Lihat di Glossary
Perangkat memiliki pelacakan kamera.
HeldInHand Pengguna memegang perangkat di tangan mereka.
HandTracking Perangkat ini mewakili tangan yang dilacak secara fisik. Ini memiliki pelacakan perangkat, dan mungkin mengandung data tangan dan tulang.
EyeTracking Perangkat dapat melakukan pelacakan mata dan memiliki fitur EyesData.
TrackedDevice Perangkat dapat dilacak di ruang 3D. Ini memiliki pelacakan perangkat.
Controller Perangkat memiliki data input untuk tombol dan sumbu, dan dapat digunakan sebagai pengontrol.
TrackingReference Perangkat mewakili objek referensi pelacakan statis. Ini memiliki pelacakan perangkat, tetapi data pelacakan tidak harus berubah.
Left Gunakan karakteristik ini dalam kombinasi dengan karakteristik HoldInHand atau HandTracking untuk mengidentifikasi perangkat yang terkait dengan tangan kiri.
Right Gunakan karakteristik ini dalam kombinasi dengan karakteristik DiHand atau HandTracking untuk mengidentifikasi perangkat yang terkait dengan tangan yang tepat.
Simulasi6DOF Perangkat melaporkan data 6DOF, tetapi hanya memiliki sensor 3DOF. Unity mensimulasikan data posisi.

XR SDK melaporkan karakteristik ini. Anda dapat melihatnya dengan InputDevice.Characteristics. Perangkat dapat, dan sering harus, memiliki beberapa karakteristik yang dapat Anda filter dan akses dengan sedikit bendera.

InputDevices.GetDevicesWithCharacteristik menyediakan cara untuk mencari semua perangkat dengan set karakteristik yang diberikan. Misalnya, Anda dapat mencari Kiri, HeldInHand, Controller InputDevices tersedia dalam sistem dengan kode berikut:

var leftHandedControllers = new List<UnityEngine.XR.InputDevice>();
var desiredCharacteristics = UnityEngine.XR.InputDeviceCharacteristics.HeldInHand | UnityEngine.XR.InputDeviceCharacteristics.Left | UnityEngine.XR.InputDeviceCharacteristics.Controller;
UnityEngine.XR.InputDevices.GetDevicesWithCharacteristics(desiredCharacteristics, leftHandedControllers);

foreach (var device in leftHandedControllers)
{
    Debug.Log(string.Format("Device name '{0}' has characteristics '{1}'", device.name, device.characteristics.ToString()));
}

Perangkat fungsi ini menemukan setidaknya karakteristik yang ditentukan, tetapi mungkin mengandung karakteristik tambahan. Sebagai contoh, untuk menemukan pengontrol kiri yang dapat Anda cari InputDeviceCharacteristic. Hanya kiri, dan tidak EnterDeviceCharacteristic. Login

Mengakses perangkat input dengan peran

Peran perangkat menggambarkan fungsi umum perangkat input. Gunakan numerasi InputDeviceRole untuk menentukan peran perangkat. Peran yang ditentukan adalah:

Role Description
GameController Konsol-style game controllerPerangkat untuk mengontrol objek dan karakter dalam permainan.
Lihat di Glossary
.
Generic Perangkat yang mewakili perangkat XR inti, seperti tampilan yang dipasang kepala atau perangkat seluler.
HardwareTracker Perangkat pelacakan.
LeftHanded Perangkat yang terkait dengan tangan kiri pengguna.
RightHanded Perangkat yang terkait dengan tangan kanan pengguna.
TrackingReference Perangkat yang melacak perangkat lain, seperti kamera pelacakan Oculus.

XR SDK melaporkan peran ini, tetapi penyedia yang berbeda dapat mengatur peran perangkat mereka secara berbeda. Selain itu, pengguna dapat beralih tangan, sehingga tugas peran mungkin tidak cocok di mana pengguna memegang perangkat input. Sebagai contoh, pengguna harus mengatur pengontrol Daydream sebagai kanan atau kiri, tetapi dapat memilih untuk menahan pengontrol di tangan yang berlawanan.

GetDevicesWithRole menyediakan daftar perangkat apa pun dengan InputDeviceRole tertentu. Misalnya, Anda dapat menggunakan InputDeviceRole.GameController untuk mendapatkan perangkat GameController yang terhubung:

var gameControllers = new List<UnityEngine.XR.InputDevice>();
UnityEngine.XR.InputDevices.GetDevicesWithRole(UnityEngine.XR.InputDeviceRole.GameController, gameControllers);

foreach (var device in gameControllers)
{
    Debug.Log(string.Format("Device name '{0}' has role '{1}'", device.name, device.role.ToString()));
}

Mengakses perangkat input dengan node XR

XR node mewakili titik fisik referensi dalam sistem XR (misalnya, posisi kepala pengguna, tangan kanan dan kiri mereka, atau referensi pelacakan seperti kamera Oculus).

Enumerasi XRNode mendefinisikan node berikut:

XR node Description
CenterEye Titik tengah jalan antara pupil mata pengguna.
GameController Pengontrol permainan gaya konsol. Aplikasi Anda dapat memiliki beberapa perangkat pengontrol permainan.
HardwareTracker Perangkat pelacakan perangkat keras, biasanya melekat pada pengguna atau barang fisik. Beberapa node pelacak perangkat keras dapat ada.
Head Titik pusat kepala pengguna, seperti dihitung oleh sistem XR.
LeftEye Mata kiri pengguna.
LeftHand Tangan kiri pengguna.
Login Login Mata kanan pengguna.
RightHand Tangan kanan pengguna.
TrackingReference Titik referensi pelacakan, seperti kamera Oculus. Beberapa node referensi pelacakan dapat ada.

Gunakan InputDevices.GetDevicesAtXRNode untuk mendapatkan daftar perangkat yang terkait dengan XRNode tertentu. Contoh berikut menunjukkan cara mendapatkan pengontrol kiri tangan:

var leftHandDevices = new List<UnityEngine.XR.InputDevice>();
UnityEngine.XR.InputDevices.GetDevicesAtXRNode(UnityEngine.XR.XRNode.LeftHand, leftHandDevices);

if(leftHandDevices.Count == 1)
{
    UnityEngine.XR.InputDevice device = leftHandDevices[0];
    Debug.Log(string.Format("Device name '{0}' with role '{1}'", device.name, device.role.ToString()));
}
else if(leftHandDevices.Count > 1)
{
    Debug.Log("Found more than one left hand!");
}

Mendengarkan koneksi perangkat dan pemutusan

Perangkat input konsisten dari bingkai ke bingkai, tetapi dapat menghubungkan atau memutuskan kapan saja. Untuk menghindari pemeriksaan berulang jika perangkat terhubung ke platform, gunakan InputDevices.deviceConnected dan InputDevices.deviceDisconnected untuk memberitahukan aplikasi Anda ketika perangkat terhubung atau memutuskan. Ini juga memberi Anda referensi ke perangkat input yang terhubung baru.

Karena Anda dapat mempertahankan referensi ini atas beberapa bingkai, perangkat mungkin memutuskan, atau tidak lagi tersedia. Untuk memeriksa apakah input perangkat masih tersedia, gunakan InputDevice.isValid. ScriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
yang mengakses perangkat input harus memeriksa ini pada awal setiap bingkai sebelum mereka mencoba untuk menggunakan perangkat itu.

Mengakses fitur input pada perangkat input

Anda dapat membaca fitur input, seperti keadaan tombol pemicu, dari InputDevice tertentu. Misalnya, membaca keadaan pemicu yang tepat, ikuti langkah-langkah ini:

  1. Gunakan Login Login atau XRNode.RightHand untuk mendapatkan contoh perangkat yang tepat.
  2. Setelah Anda memiliki perangkat yang benar, gunakan metode Datasheet untuk mengakses keadaan saat ini.

TryGetFeatureValue() mencoba untuk mengakses nilai fitur saat ini, dan kembali:

  • benar jika berhasil mengambil nilai fitur yang ditentukan
  • palsu jika perangkat saat ini tidak mendukung fitur yang ditentukan, atau perangkat tidak valid (yaitu, pengontrol tidak lagi aktif)

Untuk mendapatkan tombol tertentu, input sentuh, atau nilai sumbu joystick, gunakan kelas CommonUsages. CommonUsages mencakup setiap InputFeatureUsage dalam Tabel pemetaan input XR, serta fitur pelacakan seperti posisi dan rotasi. Contoh kode berikut menggunakan WordPress.org untuk mendeteksi apakah pengguna saat ini menekan tombol pemicu pada instance InputDevice tertentu:

bool triggerValue;
if (device.TryGetFeatureValue(UnityEngine.XR.CommonUsages.triggerButton, out triggerValue) && triggerValue)
{
    Debug.Log("Trigger button is pressed.");
}

Anda juga dapat menggunakan metode InputDevice.TryGetFeatureUsages untuk mendapatkan daftar setiap InputFeatureUsage yang disediakan perangkat. Fungsi ini mengembalikan daftar item InputFeatureUsage, yang memiliki jenis dan properti nama yang menggambarkan fitur. Contoh berikut menunjukkan semua fitur Boolean yang diberikan perangkat input:

var inputFeatures = new List<UnityEngine.XR.InputFeatureUsage>();
if (device.TryGetFeatureUsages(inputFeatures))
{
    foreach (var feature in inputFeatures)
    {
        if (feature.type == typeof(bool))
        {
            bool featureValue;
            if (device.TryGetFeatureValue(feature.As<bool>(), out featureValue))
            {
                Debug.Log(string.Format("Bool feature {0}'s value is {1}", feature.name, featureValue.ToString()));
            }
        }
    }
}

Contoh untuk primerButton

Konfigurasi pengontrol yang berbeda memberikan akses ke fitur yang berbeda. Misalnya, Anda mungkin memiliki beberapa pengontrol pada satu sistem, pengontrol yang berbeda pada sistem yang berbeda, atau tombol yang berbeda pada pengontrol yang sama dengan SDK yang berbeda. Keanekaragaman ini membuatnya lebih rumit untuk mendukung masukan dari berbagai sistem XR. API Unity InputFeatureUsage membantu Anda mendapatkan masukan yang tidak tergantung platform.

Contoh berikut mengakses InputFeatureUsage yang disebut primaryButton, tidak peduli yang controller atau perangkat input menyediakannya. Contohnya termasuk kelas yang memindai perangkat yang tersedia untuk primaryButton saat mereka terhubung. Kelas memantau nilai fitur pada perangkat yang terhubung dan, jika perubahan nilai, kelas mengirimkan UnityEvent.

Untuk menggunakan kelas ini, tambahkan sebagai komponen untuk setiap GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
di SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
. Contoh:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.XR;

[System.Serializable]
public class PrimaryButtonEvent : UnityEvent<bool> { }

public class PrimaryButtonWatcher : MonoBehaviour
{
    public PrimaryButtonEvent primaryButtonPress;

    private bool lastButtonState = false;
    private List<InputDevice> devicesWithPrimaryButton;

    private void Awake()
    {
        if (primaryButtonPress == null)
        {
            primaryButtonPress = new PrimaryButtonEvent();
        }

        devicesWithPrimaryButton = new List<InputDevice>();
    }

    void OnEnable()
    {
        List<InputDevice> allDevices = new List<InputDevice>();
        InputDevices.GetDevices(allDevices);
        foreach(InputDevice device in allDevices)
            InputDevices_deviceConnected(device);

        InputDevices.deviceConnected += InputDevices_deviceConnected;
        InputDevices.deviceDisconnected += InputDevices_deviceDisconnected;
    }

    private void OnDisable()
    {
        InputDevices.deviceConnected -= InputDevices_deviceConnected;
        InputDevices.deviceDisconnected -= InputDevices_deviceDisconnected;
        devicesWithPrimaryButton.Clear();
    }

    private void InputDevices_deviceConnected(InputDevice device)
    {
        bool discardedValue;
        if (device.TryGetFeatureValue(CommonUsages.primaryButton, out discardedValue))
        {
            devicesWithPrimaryButton.Add(device); // Add any devices that have a primary button.
        }
    }

    private void InputDevices_deviceDisconnected(InputDevice device)
    {
        if (devicesWithPrimaryButton.Contains(device))
            devicesWithPrimaryButton.Remove(device);
    }

    void Update()
    {
        bool tempState = false;
        foreach (var device in devicesWithPrimaryButton)
        {
            bool primaryButtonState = false;
            tempState = device.TryGetFeatureValue(CommonUsages.primaryButton, out primaryButtonState) // did get a value
                        && primaryButtonState // the value we got
                        || tempState; // cumulative result from other controllers
        }

        if (tempState != lastButtonState) // Button state changed since last frame
        {
            primaryButtonPress.Invoke(tempState);
            lastButtonState = tempState;
        }
    }
}

Kelas PrimaryReactor berikut menggunakan PrimaryButtonWatcher untuk mendeteksi ketika Anda menekan tombol utama dan, dalam menanggapi pers, memutar GameObject induknya. Untuk menggunakan kelas ini, tambahkan ke GameObject yang terlihat, seperti Cube, dan seret referensi PrimaryButtonWatcher ke properti Watcher.

using System.Collections;
using UnityEngine;

public class PrimaryReactor : MonoBehaviour
{
    public PrimaryButtonWatcher watcher;
    public bool IsPressed = false; // used to display button state in the Unity Inspector window
    public Vector3 rotationAngle = new Vector3(45, 45, 45);
    public float rotationDuration = 0.25f; // seconds
    private Quaternion offRotation;
    private Quaternion onRotation;
    private Coroutine rotator;

    void Start()
    {
        watcher.primaryButtonPress.AddListener(onPrimaryButtonEvent);
        offRotation = this.transform.rotation;
        onRotation = Quaternion.Euler(rotationAngle) * offRotation;
    }

    public void onPrimaryButtonEvent(bool pressed)
    {
        IsPressed = pressed;
        if (rotator != null)
            StopCoroutine(rotator);
        if (pressed)
            rotator = StartCoroutine(AnimateRotation(this.transform.rotation, onRotation));
        else
            rotator = StartCoroutine(AnimateRotation(this.transform.rotation, offRotation));
    }

    private IEnumerator AnimateRotation(Quaternion fromRotation, Quaternion toRotation)
    {
        float t = 0;
        while (t < rotationDuration)
        {
            transform.rotation = Quaternion.Lerp(fromRotation, toRotation, t / rotationDuration);
            t += Time.deltaTime;
            yield return null;
        }
    }
}

Mengakses data pelacakan tangan

Perangkat pelacakan tangan dukungan inputDevices. Perangkat pelacakan tangan selalu:

Data pelacakan tangan terdiri dari objek tangan dan serangkaian hingga 21 fitur input tulang. Setiap Bone memiliki posisi dan orientasi, serta referensi untuk orang tua dan tulang anak di hirarki. Objek tangan bisa mendapatkan tulang akar, atau daftar tulang untuk setiap jari individu.

Ketika Hand.TryGetRootBone mendapatkan tulang akar, itu mengambil objek yang mewakili tulang terletak di atas pergelangan tangan. Anda juga bisa mendapatkan daftar tulang yang mewakili setiap jari individu. Memanggil Hand.TryGetFingerBones kembali daftar, dari knuckle ke ujung, tulang yang mewakili jari itu.

Mengakses data pelacakan mata

Perangkat input mendukung perangkat pelacakan mata, serta perangkat pelacakan tangan. Pelacak mata terdiri dari posisi mata kiri dan kanan, lokasi di ruang 3D di mana pengguna sedang mencari, dan jumlah yang setiap mata individu berkedip. Jenis datanya adalah Eyes. Untuk mengambilnya dari perangkat, gunakan CommonUsages.eyesData.

XRInputSubsystem dan asosiasi InputDevice

Unity menyediakan dua sistem masukan: sistem input legacy, dan diperkenalkan pada 2019.2. Dalam pengaturan baru, setiap InputDevice dikaitkan dengan XRInputSubsystem. Objek subsistem ini mengontrol perilaku input global yang tidak terkait dengan perangkat input tertentu (misalnya, mengelola asal pelacakan, atau perangkat baru-baru ini dilacak).

Setiap InputDevice mengandung referensi ke subsistem terkait. Referensi ini mati jika perangkat berasal dari platform terintegrasi. Anda juga bisa mendapatkan semua objek XRInputSubsystem aktif dengan SubsystemManager.GetInstances<XRInputSubsystem>, dan setiap XRInputSubsystem bisa mendapatkan perangkatnya dengan XRInputSubsystem.TryGetInputDevices.

Anda dapat menggunakan Subsistem Input ke perangkat terbaru dengan WordPress.org. Baru-baru ini mengatur posisi saat ini HMD sebagai asal baru untuk semua perangkat. Ini kembali palsu untuk perangkat yang tidak dapat terbarukan, atau jika platform tidak mendukung pengkinian.

Untuk mengambil batas pelacakan, gunakan TryGetBoundaryPoints. Ini terdiri dari serangkaian titik 3D berurutan searah jarum jam, di mana nilai y ada di tingkat lantai, dan mereka menandai ' zona aman yang ditentukan pengguna' untuk menempatkan konten dan interaksi. Anda dapat mendengarkan perubahan batas ini dengan XRInputSubsystem.boundaryChanged.

XRInputSubsystem juga bertanggung jawab atas mode asal pelacakan, yang menyediakan konteks untuk di mana asal dunia pelacakan. Unity mendukung mode asal pelacakan berikut:

  • Device: Lokasi asal adalah lokasi pertama yang diketahui dari perangkat tampilan utama; sering HMD atau telepon.
  • Floor: Lokasi asal adalah lokasi yang dikenal di lantai.
  • Referensi Pelacakan: Lokasi asal adalah di bagian InputDevice dengan set karakteristik PelacakanReference.
  • Unknown: Jenis asal pelacakan tidak diketahui. Ini bisa karena kegagalan sistem atau kurangnya dukungan asal pelacakan.

Ada tiga API yang dapat Anda gunakan untuk mengelola mode asal pelacakan:

Masukan XR melalui sistem input legacy

Anda masih dapat menggunakan sistem input legacy, terdiri dari Input dan Login Login, untuk mengambil fitur input XR. Untuk melakukan ini, gunakan indeks input legacy yang tepat dari Tabel pemetaan input XR di halaman ini. Pada bagian Input dari Player SettingsPengaturan yang memungkinkan Anda mengatur berbagai pilihan khusus pemain untuk permainan akhir yang dibangun oleh Unity. More info
Lihat di Glossary
(menu: Edit > Project SettingsPengumpulan yang luas dari pengaturan yang memungkinkan Anda untuk mengkonfigurasi bagaimana Fisika, Audio, Jaringan, Grafik, Input dan banyak bidang lain dari jangkauan proyek Anda. More info
Lihat di Glossary
> Input), membuat pemetaan sumbu untuk menambahkan pemetaan yang tepat dari nama input ke indeks sumbu untuk fitur perangkat platform. Untuk mengambil nilai tombol atau sumbu, gunakan Login Login atau Input.GetButton dan lulus pada sumbu atau nama tombol yang sekarang dipetakan.

Untuk informasi lebih lanjut tentang cara menggunakan tombol dan joystick axes, lihat dokumentasi pada InputManager.

Haptics

Anda dapat mengirim peristiwa yang lebih bahagia ke InputDevice. Haptics mengambil bentuk impulse, dengan amplitudo dan durasi.

Tidak semua platform mendukung semua jenis haptik, tetapi Anda dapat meminta perangkat untuk kemampuan yang lebih bahagia. Contoh berikut mendapat perangkat input untuk tangan kanan, periksa untuk melihat apakah perangkat mampu haptik, dan kemudian memainkan kembali impulse jika itu mampu:

List<UnityEngine.XR.InputDevice> devices = new List<UnityEngine.XR.InputDevice>(); 

UnityEngine.XR.InputDevices.GetDevicesWithRole(UnityEngine.XR.InputDeviceRole.RightHanded, devices);

foreach (var device in devices)
{
    UnityEngine.XR.HapticCapabilities capabilities;
    if (device.TryGetHapticCapabilities(out capabilities))
    {
            if (capabilities.supportsImpulse)
            {
                uint channel = 0;
                float amplitude = 0.5f;
                float duration = 1.0f;
                device.SendHapticImpulse(channel, amplitude, duration);
            }
    }
}

  • Diperbarui XR input pemetaan tabel dan sampel kode segar di
  • Fungsi dan perilaku baru dalam NewIn20191,NewIn20192
Mobil Keyboard
2D