This shows you the differences between two versions of the page.
irva:laboratoarevr:03 [2024/10/12 21:57] andrei.lapusteanu Added GIFs |
irva:laboratoarevr:03 [2024/10/29 12:34] (current) andrei.lapusteanu typos |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator VR 03. SteamVR. Advanced input ====== | ====== Laborator VR 03. SteamVR. Advanced input ====== | ||
- | În acest laborator vom studia câteva aspecte mai avansate legate de input - cum îl putem citi în cod, cum ne putem defini acțiuni noi / custom - veți reuni aceste aspecte în implementarea unui gravity gun! | + | În acest laborator vom studia câteva aspecte mai avansate legate de input - cum îl putem citi în cod, cum ne putem defini acțiuni custom - veți reuni aceste aspecte în implementarea unui gravity gun! |
<note warning> | <note warning> | ||
Line 46: | Line 46: | ||
* **MovementOnFoot** pentru mișcare pedestră (WASD pe tastatură sau joystick pe un controller) | * **MovementOnFoot** pentru mișcare pedestră (WASD pe tastatură sau joystick pe un controller) | ||
* **MovementInCar** pentru condusul unei mașini (**aceleași taste WASD** pe tastatură sau joystick pe un controller, dar într-un alt context!) | * **MovementInCar** pentru condusul unei mașini (**aceleași taste WASD** pe tastatură sau joystick pe un controller, dar într-un alt context!) | ||
- | * **MovementInBoat** pentru navigarea cu o barcă. | + | * **MovementInBoat** pentru navigarea cu o barcă |
O **acțiune** reprezintă o interacțiune definită de utilizator care poate fi activată prin diverse tipuri de input-uri. Acțiunile se pot lega la una sau mai multe intrări fizice printr-un **binding**. | O **acțiune** reprezintă o interacțiune definită de utilizator care poate fi activată prin diverse tipuri de input-uri. Acțiunile se pot lega la una sau mai multe intrări fizice printr-un **binding**. | ||
Line 95: | Line 95: | ||
===== Import schelet laborator ===== | ===== Import schelet laborator ===== | ||
- | * Importați ultima versiune a pachetului ''WIP_NAME'' care se găsește în folder-ul **UnityPackages** din folder-ul root al proiectului | + | * Importați ultima versiune a pachetului ''IRVA_L3_VR_SteamVR_Skeleton'' care se găsește în folder-ul **UnityPackages** din folder-ul root al proiectului |
* Folder-ul **Assets -> L3_VR_SteamVR_Advanced** conține asset-urile suport pentru acest laborator. Deschideți scena ''L3_VR_SteamVR_GravityGun'' | * Folder-ul **Assets -> L3_VR_SteamVR_Advanced** conține asset-urile suport pentru acest laborator. Deschideți scena ''L3_VR_SteamVR_GravityGun'' | ||
Line 129: | Line 129: | ||
// - `SteamVR_Input_Sources` can be used to set a specific device to read from. In this case any device which has this action. | // - `SteamVR_Input_Sources` can be used to set a specific device to read from. In this case any device which has this action. | ||
var grabPinchState = SteamVR_Actions._default.GrabPinch.GetState(SteamVR_Input_Sources.Any); | var grabPinchState = SteamVR_Actions._default.GrabPinch.GetState(SteamVR_Input_Sources.Any); | ||
- | Debug.Log($"[SteamVRInputActionsTesting] grabPinchState = {grabPinchState}"); | + | Debug.Log($"[SteamVRInputActionsTesting] Polling: grabPinchState = {grabPinchState}"); |
} | } | ||
} | } | ||
Line 158: | Line 158: | ||
| | ||
// Method called when `onChange` from the `GrabPinch` is invoked. | // Method called when `onChange` from the `GrabPinch` is invoked. | ||
- | private void OnGrabPinchChanged(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool newState) | + | private void OnGrabPinchChanged(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource, bool grabPinchState) |
{ | { | ||
- | Debug.Log($"[SteamVRInputActionsTesting] fromAction = {fromAction}, fromSource = {fromSource}, newState = {newState}"); | + | Debug.Log($"[SteamVRInputActionsTesting] Events: grabPinchState = {grabPinchState}"); |
} | } | ||
} | } | ||
Line 195: | Line 195: | ||
<note tip> | <note tip> | ||
- | * Ca să legăm informația învățată: Acest **Grab Pinch** este o **acțiune** binded pe butonul de **Trigger**, conținută în **action set-ul default**. | + | * Ca să legăm informația învățată: Acest **Grab Pinch** este o **acțiune** binded pe butonul de **Trigger**, conținută în **action set-ul default** |
- | * În spate, SteamVR va genera cod care ne permite să referențiem în script-urile noastre aceste elemente. | + | * În spate, SteamVR va genera cod care ne permite să referențiem în script-urile noastre aceste elemente |
* Pe scurt, acesta este motivul pentru care putem referenția în cod ''SteamVR_Actions._default.GrabPinch'' | * Pe scurt, acesta este motivul pentru care putem referenția în cod ''SteamVR_Actions._default.GrabPinch'' | ||
</note> | </note> | ||
Line 264: | Line 264: | ||
Pentru a aplica cunoștințele pe care le-ați învățat pe parcursul acest laborator, va trebuie să finalizați implementarea unui **gravity gun**. | Pentru a aplica cunoștințele pe care le-ați învățat pe parcursul acest laborator, va trebuie să finalizați implementarea unui **gravity gun**. | ||
- | Logic de funcționare a acestui **gravity gun** este deja implimentată, voi va trebui să configurați și să legați input-ului necesar folosind **acțiuni** și **binding-uri**. | + | Logica de funcționare a acestui **gravity gun** este deja implimentată, voi va trebui să configurați și să legați input-ului necesar folosind **acțiuni** și **binding-uri**. |
- | Obiectul **[GracityGun]** din scena suport este de tip **Throwable**, așadar îi puteți face grab. | + | Obiectul **[GravityGun]** din scena suport este de tip **Throwable**, așadar îi puteți face grab. |
<note tip> | <note tip> |