скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Unity Character Controller (ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°)?

Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. 01. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-01. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 01. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.Π˜Ρ‚Π°ΠΊ для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ слСдуСт ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ сцСну. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Terrain, МСню GameObject>3d Object>Terrain

И создадим Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ нашСго пСрсонаТа. Для этого ΠΎΠΏΡΡ‚ΡŒ, МСню GameObject>Create Empty ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ Player. Π—Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π°ΡˆΡƒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ Π½Π°ΡˆΠ΅ΠΌΡƒ свСТСсозданному Player.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ»Π΅Π΅Ρ€Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Character Controller. Для этого Π² ΠΎΠΊΠ½Π΅ инспСктора Π½Π°ΠΆΠΌΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ Add Component ΠΈ Π² появившСмся спискС Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Physics Π½Π°ΠΆΠΌΠ΅ΠΌ Π½Π° Character Controller.

Когда ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ пСрсонаТа Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ нашСй Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅, рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ поля Π΅Π³ΠΎ настроСк.

Slope Limit: этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрсонаТу Π²Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ прСпятствия. НапримСр, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит число 45, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли ΡƒΠ³ΠΎΠ» прСпятствия большС 45 градусов, Ρ‚ΠΎ пСрсонаТ Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ смоТСт Π²Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

Step Offset: пСрсонаТ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ лСстницС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ½ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π·Π΅ΠΌΠ»Π΅, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Skin width: 2 ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ, Ρ€Π°Π²Π½ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Skin Width.

Min Move Distance: Ссли пСрсонаТ пытаСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π½ΠΈΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΎΠΎΠ±Ρ‰Π΅.

Center: сдвиг ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Radius: радиус ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, насколько ΠΆΠΈΡ€Π½Ρ‹ΠΉ получился пСрсонаТ.

Height: высота ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π°. Ну ΠΈ, соотвСтствСнно, высота ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. НапримСр, Ссли ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ высоты Π΄Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΌΠΎΠ², Ρ‚ΠΎ пСрсонаТ просто застрянСт Π² Π½ΠΈΡ….

Пока всС значСния оставим ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ дальнСйшСм ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. И ΠΊΠ°ΠΊ, это Π½Π΅ странно, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° пСрсонаТа Π³ΠΎΡ‚ΠΎΠ²Π°. Нам ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшой скрипт управлСния ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΈ нашим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΈ пСрсонаТ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ скрипт ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Player. Π­Ρ‚ΠΎΡ‚ скрипт Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ CharacterController, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, двигая ΠΈ поворачивая пСрсонаТа. Для этого Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ нашСго пСрсонаТа ΠΈ Π² инспСкторС Π½Π°ΠΆΠΌΠ΅ΠΌ Add Component. Π”Π°Π»Π΅Π΅, Π² ΠΊΠΎΠ½Ρ†Π΅ появившСгося списка, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ New Script, Π² появившСмся ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π²Π²ΠΎΠ΄ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ скрипта, Π² нашСм случаС – Player.

Π—Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ дСйствиС – это ΠΊΠ½ΠΎΠΏΠΊΠ° Create and Add. НаТимаСм! ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, скрипт создан ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ пСрсонаТу!

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ, ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ² ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π²Π° Ρ€Π°Π·Π°.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 01. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 01. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 01. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’ этом скриптС Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΠ±ΡŒΡΠ²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠŸΠ΅Ρ€Π²Π°Ρ – это ссылка Π½Π° CharaсterController. Вторая – ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двиТСния. Π’Ρ€Π΅Ρ‚ΡŒΡ-ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°. И ΡƒΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΠΌ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1 ΠΈ 3 соотвСтствСнно.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 02. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 02. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 02. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Start, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, вызываСтся ΠΏΡ€ΠΈ стартС сцСны, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ строку, которая Π½Π°ΠΉΠ΄Π΅Ρ‚ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ CharacterController ΠΊ нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ присутствуСт Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ GameObject Ρ‡Ρ‚ΠΎ ΠΈ наш скрипт.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 03. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 03. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 03. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Update. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€. Π’ Π½Π΅Π³ΠΎ для Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ строку, которая ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ наш пСрсонаТ Π²ΠΎΠΊΡ€ΡƒΠ³ оси Y, посрСдством клавиш leftArrow ΠΈ RightArrow.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 04. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 04. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 04. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ, ΠΊΡƒΠ΄Π° Π½Π°ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ. Π’ΠΎΡ‡Π½Π΅Π΅ – Π²Π΅ΠΊΡ‚ΠΎΡ€ направлСния. Он Ρƒ нас forward ΠΈΠ»ΠΈ z.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 05. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 05. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 05. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ устанавливаСм ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двиТСния. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, какая клавиша Π½Π°ΠΆΠ°Ρ‚Π°, ΠΎΠ½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 06. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 06. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 06. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, собираСм всС это вмСстС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π½Π° Character Controller.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 07. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 07. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 07. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

БохраняСм наш скрипт ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Unity. На нашСм пСрсонаТС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Π²Π° скрипта Charaster Controller ΠΈ Player.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. %D0%A1%D0%BD%D0%A1 08. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-%D0%A1%D0%BD%D0%A1 08. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° %D0%A1%D0%BD%D0%A1 08. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.Π–ΠΌΠ΅ΠΌ Play ΠΈ стрСлочками Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ нашСго пСрсонаТа. Π£Ρ€Π°Π°Π°, ΠΏΠΎΠ±Π΅ΠΆΠ°Π»ΠΈ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ рСализация пСрСдвиТСния пСрсонаТа

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ сквозь Π΄Ρ€ΡƒΠ³ΠΎΠΉ хотя Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Ρ‹ Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π°Ρ…?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ пСрсонаТ Π²ΠΎ врСмя двиТСния ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ сквозь Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠΈΠ΄Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π·Π°Π΄?

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² Unity3d ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· transform.position ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ пСрсонаТ двиТСтся с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ссли просСдаСт FPS?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ пСрсонаТа Ρ‡Π΅Ρ€Π΅Π· смСну transform.position Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Ρ‹ΠΆΠΎΠΊ ΠΎΡ‚ ΠΏΠΎΠ»Π°, Π½ΠΎ Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±Ρ‹ пСрсонаТ Π½Π΅ ΠΌΠΎΠ³ бСсконСчно Π²Π·Π»Π΅Ρ‚Π°Ρ‚ΡŒ

ВсС эти вопросы, фактичСски, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ вопросом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слишком ΡƒΠΆ часто встрСчаСтся Ρƒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Π—Π°ΠΎΠ΄Π½ΠΎ создал тэг unity3d-faq

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. dRPDg. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-dRPDg. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° dRPDg. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

1 ΠΎΡ‚Π²Π΅Ρ‚ 1

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ

Π₯ΠΎΡ‚ΡŒ я здСсь ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽ Π² Ρ‚.Ρ‡. нСфизичСскоС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π€Π˜Π—Π˜Π§Π•Π‘ΠšΠžΠ• Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. И ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° нСфизичСскоС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуациях.

Π― Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ здСсь 2 Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°: «Ρ‚СлСпортация» ΠΈ «ΠΏΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅». Π’ ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ:

Π•ΡΡ‚ΡŒ люди Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½Π΅Π½ΠΈΠ΅ отличаСтся.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС Ρ‡Ρ‚ΠΎ написано Π½ΠΈΠΆΠ΅ упираСтся Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ значСния Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Π° Π½Π΅ эти.

Π”Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Ρ‹ Π² ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ способами:

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ физичСский Π΄Π²ΠΈΠΆΠΎΠΊ (Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ обусловлСнноС физичСской модСлью ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°)

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Ρ‡Π΅Ρ€Π΅Π· CharacterController (здСсь ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ рассматриваСтся Ρ‚.ΠΊ. Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ Π² Π΅Π³ΠΎ сторону Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ смотрят, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΠ·ΠΆΠ΅ Ρ€Π°ΡΠΏΠΈΡˆΡƒ)

Новички ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Π΅Π»Π΅ΠΏΠΎΡ€Ρ‚Π°Ρ†ΠΈΡŽ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ критичСски Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. ΠŸΠΎΡ‚ΠΎΠΌ Π½Π° SO ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΡƒΡ‡ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ² вопросов Π²Ρ€ΠΎΠ΄Π΅ «ΠΏΠΎΡ‡Π΅ΠΌΡƒ пСрсонаТа Π΄Π΅Ρ€Π³Π°Π΅Ρ‚ Π²ΠΎΠ·Π»Π΅ стСны?» ΠΈΠ»ΠΈ «ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ сквозь стСну?» ΠΈΠ»ΠΈ «ΠΏΠΎΡ‡Π΅ΠΌΡƒ пуля Π½Π΅ всСгда наносит ΡƒΡ€ΠΎΠ½?» ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅.

НуТно Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ всСго ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π”Π²ΠΈΠ³Π°Ρ‚ΡŒ/ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· присвоСниС transform.position / transform.rotation нСльзя. Π­Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ любом случаС это Π²Π°ΠΌ Π²Ρ‹Π»Π΅Π·Π΅Ρ‚ Π±ΠΎΠΊΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ двиТСния:

( Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π°-ΡˆΠ°Ρ€Π° )

Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ пСстрящих Π΄ΠΈΡ‡ΡŒΡŽ Ρ„ΠΎΡ€ΡƒΠΌΠΎΠ², Π² Ρ‚.Ρ‡. сСрвисС вопросов/ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ ΡŽΠ½ΠΈΡ‚ΠΈ. Π’Π°ΠΌ Π² Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅ΠΌΠ°Ρ… слишком часто ΠΏΠΈΡˆΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Ρ‚Π΅ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понятия Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. . скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

БвязанныС с Ρ‚Π΅ΠΌΠΎΠΉ понятия:

Если ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ физичСскими свойствами (Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ RigitBody) эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для НЕфизичСского пСрСдвиТСния.

НапримСр ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

Или крутящийся ΠΊΡƒΠ± Π½Π° нСбосводС.

ΠœΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π΅Ρ€Π³Π°ΡŽΡ‰ΡƒΡŽΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈ просСдании ΠΊΠ°Π΄Ρ€ΠΎΠ² Ссли сдСлаСм ΠΠ•Π€Π˜Π—Π˜Π§Π•Π‘ΠšΠžΠ• Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

ΠΌΡ‹ присваиваСм Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ:

ΠŸΡ€ΠΎ физичСскиС свойства двиТСния.

ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ²ΠΎ Π·Π°Π΄Π°Π΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ скачка. Волько 1 долю сСкунды. Но ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ измСнятся Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ автоматичСски Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡΡΡŒ ΠΏΠΎΠ΄ силой тяТСния. Пока Π½Π΅ станСт Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ (вСрхняя Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΡ€Ρ‹ΠΆΠΊΠ°), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² минус ΠΏΠΎ Y (ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π½Π° зСмлю ΠΈ Π½Π΅ отскочит ΠΎΡ‚ Π½Π΅Π΅ (снова плюс ΠΏΠΎ Y ) ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ остановки физичСской скорости ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π° Π½Π° Π·Π΅ΠΌΠ»Π΅.

Если дСвайс с ΠΈΠ³Ρ€ΠΎΠΉ сильно Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Update() / FixedUpdate() Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ΅ΡΡ‚ΡŒ Π² скорости. И Ссли Π² Ρ„ΠΈΠ·ΠΈΠΊΠ΅ это ΡƒΡ‡Ρ‚Π΅Π½ΠΎ ΠΈ Π±Π΅Π· нас, Ρ‚ΠΎ сСйчас ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ НЕ физичСскоС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ-этому это Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½ΠΎΠ³ΠΎ мноТитСля.

Но ΠΈ Π±Π΅Π· использования Π΄Π°Π½ΠΎΠ³ΠΎ мноТитСля Ρƒ нас Π½Π΅ появится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠ²Π°Π»Π°ΠΌΠΈ сквозь стСны. Π­Ρ‚ΠΎ просто фикс скорости.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простой Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΠ•Π€Π˜Π—Π˜Π§Π•Π‘ΠšΠžΠ™ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° двиТСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрсонаТа.

Если Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄Π²ΠΈΠ³Π°Π»ΠΈ ΡˆΠ°Ρ€, Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ допустимо Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΠΊΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΈΠ·.модСль. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ использовали AddForce() для этих Ρ†Π΅Π»Π΅ΠΉ.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. CENlJ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-CENlJ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° CENlJ. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ этот ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π΄Π°Π½ΠΎΠ³ΠΎ пСрсонаТа. ΠœΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ физичСский Ρ‚ΠΎΠ»Ρ‡Π΅ΠΊ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π° Π½Π° Π½Π΅-физичСскоС, Π½ΠΎ ΠŸΠ›ΠΠ’ΠΠžΠ• ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π° Π² пространствС:

Π‘ этим ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. X44zR. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-X44zR. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° X44zR. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π‘ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρƒ нас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ€ΠΎΠ΄Π΅ скачков скорости Π½Π° просСдании ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ количСства FPS, ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Π½ΠΈΠΉ, дСрганости, прохоТдСния сквозь стСны ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… нСоТиданностСй.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π±Π΅Π³Π° Π½Π° нашСго пСрсонаТа (Π½Ρƒ Ссли Π±Ρ‹ это Π±Ρ‹Π» Π½Π΅ ΠΊΡƒΠ±).

Но ΠΊΠ°ΠΊ ΠΆΠ΅ рСализация Π½Π° Ρ„ΠΈΠ·ΠΈΠΊΠ΅?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π° Ρ„ΠΈΠ·ΠΈΠΊΠ΅.

Наша ΠΏΡ€ΠΎΡˆΠ»Π°Ρ вСрсия скрипта ΠΈΠΌΠ΅Π»Π° нСсколько нСдостатков. А ΠΈΠΌΠ΅Π½Π½ΠΎ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ помСстим Π½Π° наш ΠΊΡƒΠ± CapsuleCollider (минимальноС Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° силы трСния) ΠΈ Π·Π°Π±Π»ΠΎΡ‡ΠΈΠΌ Π² rigitBody rotateX ΠΈ rotateZ (Ρ‡Ρ‚ΠΎ Π± наш пСрсонаТ Π½Π΅ ΠΏΠ°Π΄Π°Π» Π½Π° Π±ΠΎΠΊ).

А ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°Ρ†Π΅ΠΏΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎΡ‚ этот скрипт:

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. dWib3. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-dWib3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° dWib3. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ эту ΠΏΠ»Π°Π²Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π±Π΅ΠΆΠΈΡ‚, останавливаСтся, Π±Π΅ΠΆΠΈΡ‚ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону? ΠšΡ€Π°ΡΠΎΡ‚Π°!

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π³ΠΈΡ„ΠΊΠ΅ ΠΈ ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ΡΡŒ. Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ совсСм Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ πŸ™‚ Π’Π°ΠΌ ΠΊΠ°ΠΊ Π±ΡƒΠ΄-Ρ‚ΠΎ Ρ€ΡƒΠΊΠΎΠΉ Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΏΠΎ доскС.

Ну ΠΈ описанныС Π²Ρ‹ΡˆΠ΅ Π±Π°Π³ΠΈ повСдСния Π±Ρ‹Π»ΠΈ ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½Ρ‹ с Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ физичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π°ΡˆΠ΅ΠΌΡƒ пСрсонаТу ΠΈ ΠΎΡ‚ΠΊΠΎΡ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎ бСсконСчности. Но, Π΄ΡƒΠΌΠ°ΡŽ, основныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π‘ΠŸΠžΠ‘ΠžΠ‘ΠžΠ’ ΠŸΠ•Π Π•Π”Π’Π˜Π–Π•ΠΠ˜Π― с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ, я Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ» πŸ™‚

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ Ρ„ΠΈΠ·ΠΈΠΊΠΈ.

ΠŸΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ физичСскоС ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.

РСализация нСстандартной Ρ„ΠΈΠ·ΠΈΠΊΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ.

Одним ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΠ΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² нСстандартной Ρ„ΠΈΠ·ΠΈΠΊΠΈ двиТСния являСтся ΠΈΠ³Ρ€Π° Ori and the Blind Forest

Π’Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅/Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€Ρ‹ΠΆΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° основС стандартной Ρ„ΠΈΠ·ΠΈΠΊΠΈ. ВСроятнСС всСго, это дСлалось Ρ‡Π΅Ρ€Π΅Π· нСфизичСскоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ + костыли для получСния Π½ΡƒΠΆΠ½Ρ‹Ρ… эфСктов.

Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ двиТСния. Они Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Π² любом Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (Ссли станСт нСдоступным ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Ori and the blind forest Enemy Concepts ) :

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‚ΠΎ здСсь прорисовано Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΈ Π΅Π³ΠΎ вытягивания/сТатия. ИзмСнСния Ρ„ΠΎΡ€ΠΌΡ‹ Π²ΠΎ врСмя любого взаимодСйствия с внСшним ΠΌΠΈΡ€ΠΎΠΌ. Π’ Ρ‚.Ρ‡. выстрСлы Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ. А Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ радиусы опознавания Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ гСроя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π°Π³ΠΎΠΌ.

ΠšΠΎΡΡ‚Ρ‹Π»ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пСрсонаТа/Π²Ρ€Π°Π³Π° свои собствСнныС. Π­Ρ‚ΠΎ дСлаСтся Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ±Π»Π°Π΄Π°Π» своСй ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π° ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΠΈΠ·ΠΈΠΊΠ΅ навряд Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ «ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ» Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ всС Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠ»Π΅Ρ‚Π°Π΅Ρ‚ сквозь стСну

ДАЖЕ Ссли Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ физичСскоС ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ вашСго пСрсонаТа, всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ случится Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ просчСт CollisionDetect ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с ошибками. Π’Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚.

Для Ρ‚Π°ΠΊΠΈΡ… случаСв Π΅ΡΡ‚ΡŒ настройки ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ CollisionDetect Π² настройках самого RigitBody.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. GkfsP. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-GkfsP. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° GkfsP. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚.ΠΊ. это Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π§Π΅ΠΌ Π½Π° большСм количСствС ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ‹ мСняСтС эти настройки, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ вСроятно Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π΄ΠΈΡ‡ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄Π΅Π»Π°Ρ‚ΡŒ совсСм Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π‘Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ это ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΡ€ΡƒΠ³ΠΎΠΌ, Π° Π½Π΅ ΠΏΠ°Π½Π°Ρ†Π΅Π΅ΠΉ. А Ссли Π²Ρ‹ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ‹ ΠΏΡ€ΠΈΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° SO с вопросом ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ³Ρ€Π° Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚, вас попросят ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄ΡƒΡ‚ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ² Π½Π΅ Π² ΠΊΠΎΠ΄Π΅. И Π½Π°ΠΌΡƒΡ‡Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ с оптимизациями ΠΎΠΉ ΠΊΠ°ΠΊ сильно.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсонаТСм, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ Π² Unity

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Asset управлСния Π² Unity имСю нСсколько скриптов, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΌΡ‹ΡˆΠΈ, Π½ΠΎ отсутствуСт скрипт пСрСмСщСния с использованиСм ΠΌΡ‹ΡˆΠΈ (Β«Diablo-styleΒ»). Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ написаны Π½Π° C#.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. image loader. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

public class MouseCamera : MonoBehaviour <
// ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Target
public Transform target;
// Π‘Π»ΠΎΠΉ(ΠΈ) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° ΠΊΠ»ΠΈΠΊ
public LayerMask mask;
// ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ управляСм
public MousePerson player;
// Π’Π΅ΠΊΡ‚ΠΎΡ€ пСрСмСщСния
private Vector3 direction;
// Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π»ΡƒΡ‡Π΅
RaycastHit hit;

void Update() <
if (Input.GetMouseButtonUp(0)) <
// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΡƒΡ‡Π°
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
// КидаСм Π»ΡƒΡ‡ бСсконСчной Π΄Π»ΠΈΠ½Π½Ρ‹ ΠΈ провСряСм пСрСсСчСниС слоСв
if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask)) <
// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Ρ‚ΡƒΠ΄Π° наш Target
target.position = hit.point;

// Π‘ΠΎΠΎΠ±Ρ‰Π°Π΅ΠΌ пСрсонаТу ΠΎ Π½ΠΎΠ²ΠΎΠΌ «Π·Π°Π΄Π°Π½ΠΈΠ΅»
player.GetTarget(target.position);
>
>
>
>

Π‘ΠΊΡ€ΠΈΠΏΡ‚ провСряСт пСрСсСкаСт Π»ΠΈ мСсто ΠΊΠ»ΠΈΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚(Ρ‹) ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² слоС, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² это мСсто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ†Π΅Π»ΠΈ ΠΈ Β«Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Β» пСрсонаТу Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊ этому мСсту.
Π‘ΠΊΡ€ΠΈΠΏΡ‚ пСрсонаТа Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС, Π½ΠΎ Π½Π΅ сильно слоТнСС.
using UnityEngine;

public class MousePerson : MonoBehaviour <
// ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ
CharacterController player;
// Радиус Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСрсонаТ считаСт Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρƒ Ρ†Π΅Π»ΠΈ
public float radiusNoClick = 3f;
// ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Target
public Vector3 target = Vector3.zero;
// Π’Π΅ΠΊΡ‚ΠΎΡ€ пСрСмСщСния
private Vector3 direction;
// Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°
public float speedRotation = 10f;
// Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ пСрСдвиТСния
public float speedMove = 45f;
// ΠœΠ°Ρ€ΠΊΠ΅Ρ€ пСрсонаТа, Π½Π° мСстС ΠΈΠ»ΠΈ Π½Π΅Ρ‚
private bool onPlace = true;
// Анимации
private Animation _animation;
// Бостояния
enum CharacterState <
Idle = 0,
Walking = 1,
>
// БостояниС
private CharacterState _characterState;

void Start() <
// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ
_animation = GetComponent();
// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ пСрсонаТа
player = (CharacterController)gameObject.GetComponent(typeof(CharacterController));
>

// ΠŸΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡΡ
Quaternion look = Quaternion.LookRotation(direction);
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, look, Time.deltaTime * speedRotation);

// ДвигаСмся
player.Move(direction * Time.deltaTime * speedMove);

// ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ
_characterState = CharacterState.Walking;
>
else
// ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ Π² состоянии «ΠΏΠΎΠΊΠΎΡ»
_characterState = CharacterState.Idle;

if (_animation) <
// Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π² зависимости ΠΎΡ‚ состояния
if (_characterState == CharacterState.Walking)
_animation.Play(«walk», PlayMode.StopAll);
else if (_characterState == CharacterState.Idle)
_animation.Play(«idle», PlayMode.StopAll);
>
>

public void OnPlaceTrue() <
onPlace = true;
>
>

ΠœΠ΅Ρ‚ΠΎΠ΄ GetTarget() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ· скрипта MouseCamera ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ†Π΅Π»ΠΈ ΠΈ провСряСтся Π½Π΅ находится Π»ΠΈ ΠΎΠ½ ΠΎΠΊΠΎΠ»ΠΎ пСрсонаТа. Если всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ Ρ†Π΅Π»ΡŒ Π΄Π°Π»Π΅ΠΊΠΎ, пСрсонаТ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² сторону Ρ†Π΅Π»ΠΈ, ΠΏΡƒΡ‚Π΅ΠΌ вычислСний проводящихся Π² Update(). ΠœΠ΅Ρ‚ΠΎΠ΄ OnPlaceTrue() слуТит для указания пСрсонаТу, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π° мСстС. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² нСбольшом Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ размСщаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π¦Π΅Π»ΠΈ.

public class TriggerOnTarget : MonoBehaviour <

public MousePerson player;

void OnTriggerEnter(Collider onPlace) <
player.OnPlaceTrue();
>
>

ΠŸΡ€ΠΈ пСрСсСчСнии Π·ΠΎΠ½Ρ‹ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°, сообщаСтся Ρ‡Ρ‚ΠΎ пСрсонаТ ΠΏΡ€ΠΈΠ±Ρ‹Π» Π² мСсто назначСния.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. image loader. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ «ΠΎΠ½» Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ радиус (зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² вашСго пСрсонаТа) ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² скриптС пСрсонаТа, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ зависит.
Π£ пСрсонаТа Π² скриптС всС настройки оставлСны ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Ρ‚ нСобходимости.
скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. image loader. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.
На ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π² скриптС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ€ΠΎΠ»ΡŒ Ρ†Π΅Π»ΠΈ, ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ управляСт ΠΈ слой ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ «Π»ΠΎΠ²ΠΈΡ‚ΡŒ» ΠΊΠ»ΠΈΠΊΠΈ, ΠΈ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ пСрсонаТ. Для этой Ρ†Π΅Π»ΠΈ я Π·Π°Π²Π΅Π» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ слой Terrain ΠΈ присвоил Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Ρ€ΠΎΠ»ΡŒ Π·Π΅ΠΌΠ»ΠΈ.
Π’ΠΎΡ‚ ΠΈ всС, ΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈ экспСримСнтируйтС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Unity β€” Π±Π°Π·ΠΎΠ²Ρ‹Π΅ скрипты двиТСния

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ напишСм ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставляСт gameObject ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ…, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π² зависимости ΠΎΡ‚ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ процСсс написания сцСнариСв Unity.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с нашСго сцСнария двиТСния. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ сцСнарий ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ Β«Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Β».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ сцСнарий, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π° послСднСм ΡƒΡ€ΠΎΠΊΠ΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ отобраТаСтся ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния Π² ΠΊΠΎΠ΄Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ отобраТаСтся ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния Π² ΠΊΠΎΠ΄Π΅.

Если ΠΌΡ‹ сохраним этот скрипт, Π½Π΅ затрагивая Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Unity.

(Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ компилируСтся скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. buffer. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-buffer. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° buffer. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.Π·Π½Π°Ρ‡ΠΎΠΊ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ.)

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ сцСнарий ΠΈΠ· Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² Π² GameObject. Если Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² свойствах GameObject β€”

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. drag and drop. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-drag and drop. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° drag and drop. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ скорости являСтся Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ постоянного измСнСния ΠΊΠΎΠ΄Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ update () вмСсто start ().

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Ρ†Π΅Π»ΠΈ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° обновлСния β€”

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.

Если Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ инструкции ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ значСния полоТСния прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² зависимости ΠΎΡ‚ Π΅Π³ΠΎ скорости ΠΈ направлСния. Для этого ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ β€”

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.

Если Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ инструкции ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ значСния полоТСния прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² зависимости ΠΎΡ‚ Π΅Π³ΠΎ скорости ΠΈ направлСния. Для этого ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ β€”

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ обсудим ΠΊΠΎΠ΄ Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Класс Input ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π²ΠΈΠ΄Π΅ наТатия клавиш, Π²Π²ΠΎΠ΄Π° ΠΌΡ‹ΡˆΡŒΡŽ, Π²Π²ΠΎΠ΄Π° с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄ GetAxisRaw Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС для понимания, поэтому ΠΌΡ‹ вСрнСмся ΠΊ этому ΠΏΠΎΠ·ΠΆΠ΅.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ этот скрипт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π² Unity. Unity автоматичСски ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ всС сцСнарии послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляции, поэтому Π²Π°ΠΌ Π½Π΅ придСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сцСнарий снова ΠΈ снова.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ скорости Π² свойствах GameObject Π½Π° 0,8. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ высокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ заставит ΠΈΠ³Ρ€ΠΎΠΊΠ° Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ слишком быстро.

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. speed value. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-speed value. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° speed value. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Play ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π² дСйствии!

скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. play. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄ Ρ„ΠΎΡ‚ΠΎ. скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄-play. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° скрипт Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° play. Команда Unity3D заботится ΠΎ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΠ³Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Unity Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° интСрСсная систСма, называСтся ΠΎΠ½Π° – Character Controller, Π° ΠΏΠΎ русски – ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆΠ°. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π°? Π’ основном ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния пСрсонаТСм ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° Π±Π΅Π· использования Ρ„ΠΈΠ·ΠΈΠΊΠΈ Rigidbody.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ клавиши со стрСлками ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Play Π΅Ρ‰Π΅ Ρ€Π°Π·. Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π΅ постоянно.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Ρ‚Π²Π΅Ρ€Π΄Ρ‹Ρ… Ρ‚Π΅Π»Π°Ρ… ΠΈ столкновСниях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ пСрсонаТа Π² ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

ΠœΠΎΠΆΠ΅Ρ‚ ΡƒΠΆΠ΅ поднимался Ρ‚Π°ΠΊΠΎΠΉ вопрос, Π½ΠΎ поиск Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π΅ Π΄Π°Π», ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ‚Π΅ слова писал.

БобствСнно ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт управлСния, навСрняка ΡƒΠΆΠ΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ писал Ρ‚Π°ΠΊΠΎΠΉ.

НуТно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсонаТСм ΠΈ ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ММО.
Π‘ΠΊΡ€ΠΈΠΏΡ‚ для ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹:

using UnityEngine ;
using System.Collections ;

[ AddComponentMenu ( «Camera-Control/Mouse Orbit with zoom» ) ]
public class MyMousLook : MonoBehaviour <

//Бсылка Π½Π° отслСТиваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
public Transform target ;
//коэффициСнты скорости ΠΏΠΎ осям X Y
public float xSpeed = 12.0f ;
public float ySpeed = 12.0f ;
//Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ скрола
public float scrollSpeed = 10.0f ;
//МаксимальноС ΠΈ минимальноС расстояниС Π΄ΠΎ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹
public float zoomMin = 1.0f ;
public float zoomMax = 30.0f ;
//Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ расстояниС Π΄ΠΎΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹
public float distance = 15 ;
public float Ypos ;
// позиция ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹
public Vector3 position ;
public static Vector3 positionCamera ; //Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² скрипт управлСния пСрсом
//Π—Π°ΠΆΠ°Ρ‚Π° Π»ΠΈ правая ΠΊΠ½ΠΎΠΏΠΊΠ°
public bool isActivated ;
//для отслСТивания ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора ΠΏΠΎ осям
float x = 0.0f ;
float y = 0.0f ;

// ВыполняСтся послС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ обновлСния сцСны
void LateUpdate ( ) <
if ( Input. GetMouseButtonDown ( 1 ) ) <
isActivated = true ;
>
if ( Input. GetMouseButtonUp ( 1 ) ) <
isActivated = false ;
>

public static float ZoomLimit ( float angle, float min, float max )
<
if ( angle min )
angle = min ;
if ( angle > max )
angle = max ;
return Mathf. Clamp ( angle, min, max ) ;
>
>

Π—Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° для пСрсонаТа:

///
/// Move player.
/// Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ пСрсонаТСм
/// Π’Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° пСрсонаТа
///
using UnityEngine ;
using System.Collections ;

public class MovePlayer : MonoBehaviour
<
private GameObject Player ;
public MyMousLook Char ;

// ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для управлСния ΠΌΡ‹ΡˆΡŒΡŽ
public float stopStart = 1.5f ;
public float speed = 5f ;
public float rotationSpeed = 1200f ;
public float heightPlayer = 1f ;

private float mag, angleToTarget ;
private Ray ray ;
private RaycastHit hit ;
private Vector3 dir ;
private Vector3 target = new Vector3 ( ) ;
private Vector3 lastTarget = new Vector3 ( ) ;

// Анимации
public AnimationClip a_Idle ;
public float a_IdleSpeed = 1 ;
public AnimationClip a_Walk ;
public float a_WalkSpeed = 1 ;
public AnimationClip a_Run ;
public float a_RunSpeed = 2 ;

private bool walk ;
private bool _run ;
//———————-
private float LastClick = 0f ; //ВрСмя послСднСго ΠΊΠ»ΠΈΠΊΠ°
private float doubleClickDelay = 0.3f ; //Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΊΠ°

if ( _run ) <
animation. CrossFade ( a_Run. name ) ;
>
else <
animation. CrossFade ( a_Walk. name ) ;
>
>
else if ( Input. GetKey ( KeyCode. D ) || Input. GetKey ( KeyCode. RightArrow ) )
< //Π½Π° Π»Π΅Π²ΠΎ

//transform.Rotate(MyMousLook.positionCamera * rotationSpeed * Time.deltaTime);
//transform.rotation = Quaternion.identity;

if ( _run ) <
animation. CrossFade ( a_Run. name ) ;
>
else <
animation. CrossFade ( a_Walk. name ) ;
>

if ( gap doubleClickDelay ) <

LastClick = Time. time ;
>

БобствСнно всё.
Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *