ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11
ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11
ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ мобильноС VR-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· дТойстика

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ VR Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах растСт с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Π΅ΠΌ. Π‘Π°ΠΌΠΎΠ΅ врСмя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм управлСния.

ОблоТка: Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ мобильноС VR-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· дТойстика

Π’Ρ‹Π±ΠΎΡ€ способа управлСния часто становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… VR-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, вСдь Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² нашС врСмя ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для своСго дСвайса. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм Π²Π°ΠΌ ΠΎΠ± интСрСсной систСмС управлСния Π±Π΅Π· дТойстика β€” GVRNavi, Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅ ΠΈ возмоТностях. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ прСдоставим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ созданию собствСнного VR-прилоТСния с использованиСм этой систСмы.

ВступлСниС

Π’ послСднСС врСмя большоС распространСниС ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ³Ρ€Ρ‹ ΠΈ прилоТСния Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. И Ссли с HTC Vive, Oculus Rift, PS VR ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ всС понятно, Ρ‚ΠΎ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Как Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‡ΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств: ΠΎΡ‚ Google Cardboard ΠΈ VR BOX Π΄ΠΎ Google Daydream ΠΈ Samsung Gear VR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоят Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΡ€ΠΎΠΆΠ΅. НС Ρƒ всСх Π΅ΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ΅ Π² поставку ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дТойстики.

Π’Π°ΠΊ Π²ΠΎΡ‚, ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. Рассмотрим основныС способы управлСния ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· дТойстика Π² мобильной Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΡƒΠ·Π΅Π΅Π² ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Основной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ способа являСтся отсутствиС возмоТности Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² любом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ свободы пСрСмСщСния.
  • Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ взгляда. Π‘Π²ΠΎΠ±ΠΎΠ΄Π° пСрСмСщСния Π΅ΡΡ‚ΡŒ, Π½ΠΎ отсутствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ постоянныС столкновСния со стСнами. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ для Ρ€Π°Π½Π½Π΅Ρ€ΠΎΠ².
  • Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ дТойстик снизу. Π‘Π²ΠΎΠ±ΠΎΠ΄Π° пСрСмСщСния Π΅ΡΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΈ частом ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ постоянно приходится Π½Π°ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²Ρƒ Π΄Π°Π»Π΅ΠΊΠΎ Π²Π½ΠΈΠ·, ΠΊΠ°ΠΊ ΠΈΡ‚ΠΎΠ³ β€” шСя ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Ρ‚ΡŒ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ довольно популярный способ.
  • GVRNavi. Π•ΡΡ‚ΡŒ свобода пСрСмСщСния, Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»ΠΎΠ½Π°ΠΌΠΈ Π³ΠΎΠ»ΠΎΠ²Ρ‹. Из минусов β€” Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³ΠΎΡ€Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ настроСк Π²Π½ΡƒΡ‚Ρ€ΠΈ ассСта.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях ΠΎΠ± этом, Π΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ GVRNavi

ОписаниС ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ

Π₯одьба осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ пСрСмСщСния курсора Π½Π° Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ полосу Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ (см. ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚). Π­Ρ‚Π° полоса Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ, ΠΈ ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄. Если курсор увСсти с полосы, Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ останавливаСтся, Π° полоса сТимаСтся, Π½Π΅ исчСзая с экрана.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 1 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ GVRNavi

ВсС элСмСнты ΠΏΠ»Π°Π³ΠΈΠ½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это врСмя – 1 сСкунда. Для ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ достаточно, Π½ΠΎ для Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€ рСкомСндуСтся ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ 0,3–0,5 сСкунд.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ мСню ΠΈ подмСню Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π΅Π· нСобходимости использования дТойстика

Навигационная панСль ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ†Π²Π΅Ρ‚ΠΎΠ² (Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ…). ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ полосу лишниС ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚, Π½Π΅ загромоТдая экран.

ΠŸΡƒΠ½ΠΊΡ‚Ρ‹ мСню Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ, просто поворачивая Π³ΠΎΠ»ΠΎΠ²Ρƒ.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ мСню ΠΈ подмСню Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ мСню Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ пространствС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, мСню Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π·Π° взглядом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π‘Π°ΠΌΡ‹ΠΉ большой плюс ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ придСтся слишком сильно ΠΌΠΎΡ‚Π°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ (Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ΄Ρ‚ΠΈ. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π²Π΅Ρ‰Π°Ρ… ΠΈ ΠΈΠ³Ρ€Π°Ρ… ΠΆΠ°Π½Ρ€Π° квСст, ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π½Π½Π΅Ρ€ ΠΈ Ρ‚.ΠΏ., Π³Π΄Π΅ Π½Π΅ трСбуСтся Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π±ΠΎΠΊΠΎΠΌ.

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ всС возмоТности ΠΏΠ»Π°Π³ΠΈΠ½Π° GVRNavi ΠΌΠΎΠΆΠ½ΠΎ Π½Π° этом Π²ΠΈΠ΄Π΅ΠΎ:

ΠŸΡ€Π΅Π²ΡŒΡŽ Π²ΠΈΠ΄Π΅ΠΎ fQemXJUsQmQ

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция ΠΏΠΎ созданию прилоТСния с использованиСм GVRNavi

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

УстанавливаСм Unity Daydream technical preview. НСобходимо ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ установкС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€œAndroid Build Support” для Android ΠΈΠ»ΠΈ β€œiOS Build Support” для iOS. Для сборки VR-прилоТСния ΠΏΠΎΠ΄ iOS ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Unity3d вСрсии 5.2.1 ΠΈ Π²Ρ‹ΡˆΠ΅.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: File β†’ Build Settings β†’ Android ΠΈΠ»ΠΈ iOS.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 2 β€” ΠΎΠΊΠ½ΠΎ β€œBuild Settings”

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅ΠΌ Π² File β†’ Build Settings β†’ Player Settings. Π‘Ρ‚Π°Π²ΠΈΠΌ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² β€œVirtual Reality Supported” ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ β€œCardboard”.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 3 β€” ΠΎΠΊΠ½ΠΎ β€œPlayer Settings”

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Google VR SDK for Unity (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ вСрсия 1.30) ΠΈ GVRNavi.

Настройка Google VR SDK

Для Π½Π°Ρ‡Π°Π»Π° Π½Π° сцСну Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ стандартныС ΠΏΡ€Π΅Ρ„Π°Π±Ρ‹ ΠΈΠ· Google VR SDK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обСспСчат ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ Π² пространствС ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы событий:

  • Assets/GoogleVR/Prefabs/GvrViewerMain.prefabΒ β€” ΠΏΡ€Π΅Ρ„Π°Π±, содСрТащий скрипт β€œGvrViewer”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отслСТиваСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ прСдоставляСт сцСну устройству для примСнСния искаТСний.
  • Assets/GoogleVR/Prefabs/GvrControllerMain.prefabΒ β€” основной ΠΏΡ€Π΅Ρ„Π°Π± GoogleVR, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ связь с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ/устройством ΠΈ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ управлСния Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.
  • Assets/GoogleVR/Prefabs/UI/GvrEventSystem.prefabΒ β€” ΠΏΡ€Π΅Ρ„Π°Π±, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ событийной систСмы ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ интСрфСйс для систСмы Π²Π²ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π°.
Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 4 β€” GvrViewerMain.prefab
Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 5 β€” GvrEventSystem.prefab

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании Π±ΠΈΠ»Π΄Π° ΠΏΠΎΠ΄ Android Π² File β†’ Build Setting β†’ Player Settings Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€œMinimum API Level” Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ мСньшС 19-Ρ‚ΠΈ, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ компиляции Π²Ρ‹ΠΏΠ°Π΄Π΅Ρ‚ ошибка.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 6 β€” ΠΎΠΊΠ½ΠΎ β€œPlayerSettings”

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Google VR

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Google VR. Для этого размСстим Π½Π° сцСнС стандартный ΠΊΡƒΠ±, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»ΠΈΠΌ Π΅Π³ΠΎ ΠΎΡ‚ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ запустим сцСну. ΠŸΡ€ΠΈ Π·Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши Alt Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΡ‹ΡˆΠΈ.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 7 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ Google VR

Π Π°Π±ΠΎΡ‚Ρƒ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ Π½Π° устройствС. Если ΠΏΡ€ΠΈ запускС сцСны Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π½Π΅ примСняСтся искаТСниС Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Π³Π»Π°Π·Π°), Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ β€œGVRViewer” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ чСкбокс β€œVR Mode Enabled”.

ΠŸΠ΅Ρ€Π΅Π΄ настройкой GVRNavi собСрСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ сцСну ΠΈΠ· стандартных ΠΊΡƒΠ±ΠΎΠ².

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 8 β€” созданиС простой сцСны

Базовая настройка GVRNavi

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° сцСну ΠΏΡ€Π΅Ρ„Π°Π± Assets/GVRNavi/Prefabs/VRPlayer.prefab.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 9 β€” VRPlayer.prefab

ΠŸΡ€Π΅Ρ„Π°Π± прСдставляСт собой простой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ плоскости. Он содСрТит Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, поэтому ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Ρ„Π°Π±Π° Π½Π° сцСну Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, которая Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° автоматичСски ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ сцСны.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° сцСну Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΊΠΎΠ»ΡŒΡ†ΠΎ. ΠŸΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π° Π½Π° Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° сцСну ΠΏΡ€Π΅Ρ„Π°Π± Assets/GVRNavi/Prefabs/VRRingSimple.prefab ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ 3D_UI.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 10 β€” располоТСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€œVRRingSimple”

Π—Π°Ρ‚Π΅ΠΌ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ событиям Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ β€œVRRingSimple” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅:

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 11 β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€œVRRingSimple”

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ β€œOn Ring Enter” вызываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ попадания ΠΏΡ€ΠΈΡ†Π΅Π»Π° Π² Π·ΠΎΠ½Ρƒ ΠΊΠΎΠ»ΡŒΡ†Π°. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ β€œOn Ring Exit” вызываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈΡ†Π΅Π»Π° ΠΈΠ· Π·ΠΎΠ½Ρ‹ ΠΊΠΎΠ»ΡŒΡ†Π°. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ β€œOn Ring Trigger” вызываСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡ†Π΅Π» ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π² Π·ΠΎΠ½Ρƒ ΠΊΠΎΠ»ΡŒΡ†Π° ΠΈ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ†Π΅Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ»ΡŒΡ†Π΅ (врСмя настраиваСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ измСнСния значСния β€œTimeToTrigger” Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ β€œVRRingSimple”). НазначСнныС Π½Π°ΠΌΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° события позволят Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ пСрСмСщСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ тСкстуру ΠΏΡ€ΠΈΡ†Π΅Π»Π°.

Π’ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ β€œFloor Panel Rotation” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ β€œTransform” ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ пСрсонаТа. Если этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ»ΡŒΡ†ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΈΡ†Π΅Π» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€ ΠΊΠΎΠ»ΡŒΡ†Π° (ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€ находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ части ΠΊΠΎΠ»ΡŒΡ†Π°).

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 12 β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€œFloor Panel Rotation”

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° GVRNavi

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запустим сцСну ΠΈ Π½Π°Π²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΡ†Π΅Π» Π½Π° ΠΊΠΎΠ»ΡŒΡ†ΠΎ. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π° Π² Π·ΠΎΠ½Ρƒ ΠΊΠΎΠ»ΡŒΡ†Π° ΠΎΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡΡ ΠΈ Ρ‡Π΅Ρ€Π΅Π· сСкунду сработаСт Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅Ρ€Π΅Π΄.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 13 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ GVRNavi

Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΊΠΎΠ»ΡŒΡ†Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, мСняя Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΡ†Π΅Π» ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚ Π·ΠΎΠ½Ρƒ ΠΊΠΎΠ»ΡŒΡ†Π°, сгСнСрируСтся событиС ΠΈ ΠΊΠ°ΠΌΠ΅Ρ€Π° остановится.

ДобавляСм интСрактивности Π² сцСну

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΡƒΠ±. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚, ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ Π½Π° ΠΊΡƒΠ±.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 14 β€” созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° сцСнС

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» VRCube.cs ΠΈ вставим Ρ‚ΡƒΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

			using UnityEngine;
using GVRNavi;

[RequireComponent(typeof(MeshRenderer))]
public class VRCube : VRObjectGaze
{
    #region variables

    public Vector2 rangeX, rangeY, rangeZ;
    public Color hoveredColor = Color.green;

    private Vector3 _defaultPosition;
    private Color _defaultColor;
    private MeshRenderer _mesh;

    #endregion


    protected override void Start()
    {
        base.Start();
        _defaultPosition = transform.position;
        _mesh = GetComponent();
        _defaultColor = _mesh.material.color;
    }

    public override void OnGazeEnter()
    {
        base.OnGazeEnter();
        if (_mesh != null)
            _mesh.material.color = hoveredColor;
    }

    public override void OnGazeExit()
    {
        base.OnGazeExit();
        if (_mesh != null)
            _mesh.material.color = _defaultColor;
    }

    public void SetToDefaultPosition()
    {
        transform.position = _defaultPosition;
    }

    public void SetToRandomPosition()
    {
        transform.localPosition = new Vector3(
            Random.Range(rangeX.x, rangeX.y),
            Random.Range(rangeY.x, rangeY.y),
            Random.Range(rangeZ.x, rangeZ.y));
    }
}
		

Назначим Π½Π° ΠΊΡƒΠ± этот скрипт. Он ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΡƒΠ±ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π°. ΠŸΡ€ΠΈ срабатывании Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΊΡƒΠ± Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ пространства Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Для взаимодСйствия с ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс IGvrGazeResponder, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ скрипт VRObjectGaze, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ наслСдуСтся VRCube.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ β€œrangeX”, β€œrangeY”, β€œrangeZ” ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ осям, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΡƒΠ± ΠΏΡ€ΠΈ смСнС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€œhoveredColor” β€” Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρƒ ΠΊΡƒΠ±Π° ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π° Π½Π° ΠΊΡƒΠ±.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 15 β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€œCube”

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» измСнСния Ρ†Π²Π΅Ρ‚Π° Π·Π°ΡˆΠΈΡ‚ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… скрипта, поэтому Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° события Π½Π΅ трСбуСтся. А Π²ΠΎΡ‚ для смСны ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΡƒΠ±Π° Π² пространствС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° событиС срабатывания Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° β€” Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetToRandomPosition(), которая находится Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ скриптС β€œVR Cube”.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ запускС сцСны ΠΌΠΎΠΆΠ½ΠΎ навСсти курсор Π½Π° ΠΊΡƒΠ± ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΈ смСну ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΡƒΠ±Π° ΠΏΡ€ΠΈ срабатывании Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 16 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта β€œVRCube”
Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 17 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта β€œVRCube”

ВнСсСм Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΡƒΠ±Π° Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° сцСну ΠΏΡ€Π΅Ρ„Π°Π± Assets/GVRNavi/Prefabs/VRRingContainer.prefab. Π­Ρ‚ΠΎ ΠΊΠΎΠ»ΡŒΡ†ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ· ΠΏΠ»Π°Π³ΠΈΠ½Π° GVRNavi. Оно позволяСт ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΊ ΠΊΠΎΠ»ΡŒΡ†Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты: ΠΊΠ½ΠΎΠΏΠΊΠΈ, чСкбоксы, скроллбары ΠΈ Ρ‚.Π΄. Π­Ρ‚ΠΎ ΠΊΠΎΠ»ΡŒΡ†ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ 3D_UI.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 18 β€” располоТСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€œVRRingContainer”

НуТно Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ β€œTransform” ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π² скриптС β€œFloor Panel Rotation”, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΡ†Π°. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ»ΡŒΡ†ΠΎ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½ΠΈΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΡ†Π°.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 19 β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€œVRRingContainer”

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запустим сцСну. ΠŸΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΡ†Π΅Π»Π° Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΊΠΎΠ»ΡŒΡ†ΠΎ ΠΏΠΎΠ΄ Π½ΠΈΠΌ появится Π²Ρ‚ΠΎΡ€ΠΎΠ΅.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 20 β€” дСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€œVRRingContainer”

БСйчас ΠΎΠ½ΠΎ Π½Π΅ приносит Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹, поэтому остановим ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ сцСны ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

Π£ ΠΊΠΎΠ»ΡŒΡ†Π° Π΅ΡΡ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Root. Он слуТит ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для Π΄Ρ€ΡƒΠ³ΠΈΡ… VR-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹ ΠΊ ΠΊΠΎΠ»ΡŒΡ†Ρƒ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Root ΠΏΡ€Π΅Ρ„Π°Π± VR-ΠΊΠ½ΠΎΠΏΠΊΠΈ Assets/GVRNavi/Prefabs/VRButton.prefab.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 21 β€” располоТСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€œVRButton”

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΊΠΎΠ»ΡŒΡ†Π΅ рСгулируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ измСнСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° β€œRotation” Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ β€œTransform”, Π° Π½Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° β€œPosition”. Π’ скриптС ΠΊΠ½ΠΎΠΏΠΊΠΈ β€œVRButtonGaze” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° событиС срабатывания Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ 22 β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€œVRButton”

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ позиция ΠΊΡƒΠ±Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²Π°ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои простыС VR-прилоТСния. Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ GVRNavi ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ – support@garpix.com. Π£Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ!

Для самых быстрых β€” Π΄Π²Π° ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Π° Π½Π° бСсплатноС скачиваниС ассСта GVRNavi ΠΈΠ· Unity Asset Store:

  • ASV-LGKK-3Q4X-HRDV-RHJ9-QEGU
  • ASV-R6VW-VYAM-VCRE-34F3-YPHC

НСобходимо Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ Π² настройках ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ бСсплатно.

Π—Π° прСдоставлСнный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Garpix.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с нашими руководствами ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ смСшанной Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ