Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ скриптов Π² срСдС Unity

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΡ‹ΡˆΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° скрипта. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ sensitivityX ΠΈ sensitivityY ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ осям. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ minimumX, maximumX, minimumY, maximumY ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΌΠ΅Ρ€Π° ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ полоТСния. По ΠΎΡΠΈ Π₯ ΡΡ‚ΠΈ значСния Ρ€Π°Π²Π½Ρ‹ -360 ΠΈ 360, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ свободно Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ ΠΏΠΎ ΠΎΡΠΈ Π₯… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ скриптов Π² срСдС Unity (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия 3d-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ столкновСний (Π‘ollision detection).

Π‘ollision detection — это способ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ анализируСтся 3D-пространство сцСны Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ столкновСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Collider, ΠΌΡ‹ Ρ„актичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π³ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡƒΡŽ сСтку — Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ столкновСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. НапримСр, Π² ΠΈΠ³Ρ€Π΅-симуляторС Π±ΠΎΡƒΠ»ΠΈΠ½Π³Π° ΡˆΠ°Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΡΡ„Π΅Ρ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π° (Sphere collider), Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ΠΊΠ΅Π³Π»Π΅ΠΉ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°/капсулы ΠΈΠ»ΠΈ, для большСй рСалистичности столкновСний, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мСш (mesh), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π΅ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ описаниСм Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ 3d-ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² поступаСт Π² Ρ„изичСский Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΠΌΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈΡ… Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° ΡΡ‚ΠΎ столкновСниС, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡΠΈΠ»Π΅ ΡƒΠ΄Π°Ρ€Π°, скорости ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ использованиС ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ², ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΡƒ мСша ΠΌΠΎΠ΄Π΅Π»ΠΈ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ столкновСний, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΈΡ… Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅.

Рассмотрим особСнности столкновСний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ нСпосрСдствСнного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π‘ollision detection, прСдоставляСмого Unity3d, Ρ‚Π°ΠΊ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ программирования Ρ‚Π°ΠΊΠΎΠ³ΠΎ взаимодСйствия Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#.

Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ сцСну Π½ΠΎΠ²Ρ‹ΠΉ кубичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ€ΠΎΠ»ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСпятствия для ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΡƒΠ±Π°, смодСлированного Ρ€Π°Π½Π΅Π΅ (GameObject > Create Other > Cube), ΠΈ ΠΏΡ€ΠΈΠ΄Π°Π΄ΠΈΠΌ Π΅ΠΌΡƒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄Π°.

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

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ взаимодСйствия ΠΊΡƒΠ±Π° ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ прСпятствия, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ исходноС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΡƒΠ±Π° — Π½Π° Ρ€Π΅Π±Ρ€ΠΎ. Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΊΡƒΠ±Π°) осущСствляСтся Π² Unity3d c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта «Rotate». ΠŸΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ этого инструмСнта Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° появляСтся своСобразная сфСра, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ ΡƒΠ³Π»Ρ‹ Π΅Π³ΠΎ вращСния Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС. Захватывая ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΅Π΅ ΡΡ‚ΠΎΡ€ΠΎΠ½, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Рис. 1.

Рис. 1.

Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌ просмотра Game, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ сцСну Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π½Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Для опрСдСлСния Ρ„Π°ΠΊΡ‚Π° столкновСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Unity3d Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΡŽ. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Plane» (ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ) Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Ground», Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ стСну (прСпятствиС), Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Wall», ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно Π²Ρ‹Π±Ρ€Π°Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΎΠΊΠ½Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΊ Π½Π΅ΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «Rename» ΠΈΠ· ΠΊΠΎΠ½Ρ‚Скстного мСню, послС Ρ‡Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² Unity3d Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Π²ΠΎΠ΄ русскоязычных символов, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΡΠΊΡ€ΠΈΠΏΡ‚Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Ρƒ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΡΡ†Π΅Π½Π΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, создадим скрипт Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования C# ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ «Dialog» (Project > Create > C# Script).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ скриптов — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Код, написанный для использования Π² Unity, опираСтся Π½Π° Ρ€ΡΠ΄ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… встроСнных классов.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

using UnityEngine;

using System. Collections;

public class Dialog: MonoBehaviour.

{.

// ΠœΠ΅Ρ‚ΠΎΠ΄-функция, вызываСмая ΠΏΡ€ΠΈ столкновСнии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

void OnCollisionEnter () {.

Debug.Log («Hit Something»); // ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ сообщСниС Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ Unity.

}}.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΊ ΡΠΊΡ€ΠΈΠΏΡ‚Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ пространства ΠΈΠΌΠ΅Π½. Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΌ классом Π² Unity3d являСтся MonoBehaviour. Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ скрипт (Π² ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ случаС это Dialog) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ наслСдником, ΠΈ Π½Π΅ΡΠΏΡ€ΠΎΡΡ‚Π° — вСдь ΠΈΠΌΠ΅Π½Π½ΠΎ этот класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ИмСнно это наслСдованиС позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ скрипту (классу) ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈ Π±Ρ‹Ρ‚ΡŒ привязанным ΠΊ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ «OnCollisionEnter» опрСдСляСт столкновСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. А ΡΡ‚атичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ «Log» класса «Debug» ΠΏΠΈΡˆΠ΅Ρ‚ сообщСниС «Hit Something» Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ Unity.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, пСрСйдя Π² Ρ€Π΅ΠΆΠΈΠΌ Play, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΡƒΠ± коснСтся плоской повСрхности, Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ срСды Unity3d (Window > Console) появляСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ столкновСнии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΈΡ‡Π΅ΠΌ послСднСС консольноС сообщСниС отобраТаСтся Π² ΡΡ‚атус (Π²Π½ΠΈΠ·Ρƒ ΠΎΠΊΠ½Π°).

Для выяснСния Ρ‚ΠΎΠ³ΠΎ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ столкнулся исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° класса «Collision», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ «OnCollisionEnter».

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ скрипта ΠΈ Π²ΡΡ‚авляСм Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Collision, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ происходит столкновСниС.

void OnCollisionEnter (Collision myCollision) {.

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ столкновСния с Π΄Π²ΡƒΠΌΡ Ρ€Π°Π·Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

if (myCollision.gameObject.name == «Ground») {.

// ΠžΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ.

Debug.Log («Stolknulsya s Zemlei»);

}.

else if (myCollision.gameObject.name == «Wall») {.

Debug.Log («Stolknulsya sΠΎ Stenoi «);

}}.

ПослС открытия консоли (Window > Console) ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ΡΡ†Π΅Π½Π΅ столкнулся ΠΊΡƒΠ±. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Unity3d позволяСт Π½Π°ΠΌ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ возмоТности взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ срСды.

НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Ρ„Π°Π± Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (Project > Create > Prefab). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Project Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° появится ΠΏΡ€Π΅Ρ„Π°Π± с ΠΈΠΌΠ΅Π½Π΅ΠΌ «New Prefab». ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² «UprugostCube».

ΠŸΡ€Π΅Ρ„Π°Π± (Prefabs) — это конструкция ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², прСдназначСнная для ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ЭкзСмпляр ΠΏΡ€Π΅Ρ„Π°Π±Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π»ΡŽΠ±ΠΎΠ΅ количСство сцСн, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² ΠΎΠ΄Π½Ρƒ сцСну. ВсС экзСмпляры ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылками Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Ρ„Π°Π± ΠΈ, фактичСски, Π΅Π³ΠΎ «ΠΊΠ»ΠΎΠ½Π°ΠΌΠΈ»; ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Бвойства созданного ΠΏΡ€Π΅Ρ„Π°Π±Π° «UprugostCube» ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инспСктора, Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ доступСн Π² ΠΎΠΊΠ½Π΅ «Preview».

Для создания ΠΏΠ°Ρ€Ρ‹ экзСмпляров ΠΏΡ€Π΅Ρ„Π°Π±Π° Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ просто Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ появятся Π΄Π²Π° ΠΊΡƒΠ±Π°, Π° Π² ΠΎΠΊΠ½Π΅ «ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ» добавится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Ρ„Π°Π±Π° «UprugostCube».

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌ просмотра «Game» ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ² сцСну, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΡƒΠ± Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, обладая ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ физичСскими свойствами.

Рассмотрим, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Unity3d Π² ΡΠΊΡ€ΠΈΠΏΡ‚Π°Ρ… Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C#. Для этого Π² ΠΎΠΊΠ½Π΅ «Project» создадим Π½ΠΎΠ²Ρ‹ΠΉ скрипт с ΠΈΠΌΠ΅Π½Π΅ΠΌ «Destroy» ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ скриптов MonoDevelop.

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, ΠΏΡ€ΠΈ создании C# скрипта Unity создаСт Π½Π΅ΠΊΠΈΠΉ каркас, состоящий ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ класса (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ скриптом) с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Start () ΠΈ Update ().

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… случаях Π½Π°ΠΌΠΈ рассматривался ΠΌΠ΅Ρ‚ΠΎΠ΄ Update, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΡΡ†Π΅Π½Π΅.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Start (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° сразу послС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Play» ΠΈ, соотвСтствСнно, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠ΄Π°Π½ΠΈΡ ΠΈΠΌ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² Ρ‚Π΅Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Start () Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Destroy () ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² Π½Π΅Π΅ gameObject, ΡƒΠΊΠ°Π·Π°Π² Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся:

// ΠΌΠ΅Ρ‚ΠΎΠ΄ Start () выполняСтся Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹, сразу послС окончания Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сцСны.

Start () {.

// ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ Π΄Π°Π½Π½Ρ‹ΠΉ скрипт.

Destroy (gameObject);

}.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ этот скрипт ΠΊ ΠΊΡƒΠ±ΠΈΡ‡Π΅ΡΠΊΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ послС запуска сцСны ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΡƒΠ± ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сразу ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ поиска Π² ΡΡ€Π΅Π΄Π΅. Для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Find () основного класса GameObject:

// ΠΈΡ‰Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Stena ΠΈ Π΅ΡΠ»ΠΈ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π΅ΡΡ‚ΡŒ — ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ.

Destroy (GameObject.Find («Wall»));

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ нСобходимости уничтоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ ΡΡ€Π°Π·Ρƒ, Π° ΡΠΏΡƒΡΡ‚я ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Destroy:

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅ΠΌ стСну, спустя Π΄Π²Π΅ сСкунды послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сцСны.

Destroy (GameObject.Find («Wall»), 2);

Π”Π°Π»Π΅Π΅ рассмотрим скрипты, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсонаТСм Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдС Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π°. Наша срСда прСдставляСт собой Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ модСль ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ корпуса № 2 Π’Π“Π‘ΠŸΠ£, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ занят помСщСниями Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π° МИЀ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ обСспСчиваСт ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, — это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€Π° 3D пространства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΡ‹ΡˆΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° скрипта. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ sensitivityX ΠΈ sensitivityY ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ осям. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ minimumX, maximumX, minimumY, maximumY ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΌΠ΅Ρ€Π° ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ полоТСния. По ΠΎΡΠΈ Π₯ ΡΡ‚ΠΈ значСния Ρ€Π°Π²Π½Ρ‹ -360 ΠΈ 360, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ свободно Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ ΠΏΠΎ ΠΎΡΠΈ Π₯. Π’ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси, эти значСния Ρ€Π°Π²Π½Ρ‹ -60 ΠΈ 60. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π½Π° 60 градусов Π²Π²Π΅Ρ€Ρ… Π»ΠΈΠ±ΠΎ Π²Π½ΠΈΠ·. Для стандартных ΠΈΠ³Ρ€ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π»ΠΈΡ†Π° эти значСния Ρ€Π°Π²Π½Ρ‹ -90 ΠΈ 90.

Π­Ρ‚ΠΎΡ‚ скрипт привязываСтся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ «ΠΊΠ°ΠΌΠ΅Ρ€Π°» ΠΈ Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΡΡ‚ΠΎΡ€ΠΎΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ смСщаСтся ΠΌΡ‹ΡˆΡŒ, Π² ΡΠΎΠΎΡ‚вСтствии с Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ, Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΌΠ°ΠΊΡΠΈΠΌΡƒΠΌΠ΅ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ΅, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Π΄ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΠ³ΠΎ значСния. Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ осущСствляСтся стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ transform. rotate, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ «ΠΊΠ°ΠΌΠ΅Ρ€Π°».

public class MouseLook: MonoBehaviour {.

public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }.

public RotationAxes axes = RotationAxes. MouseXAndY;

public float sensitivityX = 15 °F;

public float sensitivityY = 15 °F;

public float minimumX = -360 °F;

public float maximumX = 360 °F;

public float minimumY = -60 °F;

public float maximumY = 60 °F;

float rotationY = 0 °F;

void Update ().

{.

if (axes == RotationAxes. MouseXAndY).

{.

float rotationX = transform.localEulerAngles.y + Input. GetAxis («Mouse X») * sensitivityX;

rotationY += Input. GetAxis («Mouse Y») * sensitivityY;

rotationY = Mathf. Clamp (rotationY, minimumY, maximumY);

transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);

}.

else if (axes == RotationAxes. MouseX).

{.

transform.Rotate (0, Input. GetAxis («Mouse X») * sensitivityX, 0);

}.

else.

{.

rotationY += Input. GetAxis («Mouse Y») * sensitivityY;

rotationY = Mathf. Clamp (rotationY, minimumY, maximumY);

transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);

}.

}.

void Start ().

{.

// Make the rigid body not change rotation.

if (rigidbody &&(PlayerPrefs.GetString («objName») == gameObject.name)).

rigidbody.freezeRotation = true;

}.

}.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, рассмотрим скрипт пСрСмСщСния Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π»ΠΎΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ ΠΌΡ‹ΡˆΡŒΡŽ Π½Π° Π΄Π²Π΅Ρ€ΠΈ.

Рис. 2.

Рис. 2.

using UnityEngine;

using System. Collections;

public class doorClick: Photon.MonoBehaviour.

{.

public string auditory;

private void Update ().

{.

}.

void OnMouseDown ().

{.

GlobalParams.players = GameObject. FindGameObjectsWithTag («Player»);

foreach (GameObject Obj in GameObject. FindGameObjectsWithTag («Player»)).

{.

GameObject.Destroy (Obj);

Debug.Log (Obj.name);

}.

Application.LoadLevel (auditory);

}}.

ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Ρ‚аскиваСм Π΅Π³ΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Door, Ρ‚Π΅ΠΌ самым, примСняя Π΅Π³ΠΎ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС, ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΡ‹ΡˆΡŒΡŽ ΠΏΠΎ Π΄Π²Π΅Ρ€ΠΈ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΅Π³ΠΎ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого загруТаСтся сцСна Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π½Π΅ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ постоянно Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, задСйствованныС Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΡ… ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ достигаСтся ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ быстродСйствия, Ρ‡Ρ‚ΠΎ Π²ΠΊΡƒΠΏΠ΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΠ΅Ρ‡Π΅Π½Ρ‹Ρ… тСкстур ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΉ позволяСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ