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.
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
.
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:
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
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()));
}
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!");
}
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.
Anda dapat membaca fitur input, seperti keadaan tombol pemicu, dari InputDevice tertentu. Misalnya, membaca keadaan pemicu yang tepat, ikuti langkah-langkah ini:
TryGetFeatureValue()
mencoba untuk mengakses nilai fitur saat ini, dan kembali:
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()));
}
}
}
}
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;
}
}
}
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.
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.
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:
Ada tiga API yang dapat Anda gunakan untuk mengelola mode asal pelacakan:
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.
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);
}
}
}