πŸ“ Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ 2D-ΠΈΠ³Ρ€Ρƒ Π½Π° Unity: инструкция для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°

ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ 2D-ΠΈΠ³Ρ€Ρƒ Π½Π° Unity Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ³Ρ€Ρ‹ Π² ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³, C#-ΠΊΠΎΠ΄ прилагаСтся. ПошаговоС руководство для Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основу для изучСния Unity.

НСдавно ΠΌΡ‹ рассказали ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€ Π½Π° Unity. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ‚Π΅ΠΌΡƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ 2D-ΠΈΠ³Ρ€Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ систСматичСскоС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² области Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ ΠΎΠ½Π»Π°ΠΉΠ½-унивСрситСта GeekBrains.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просты: для Π½ΠΈΡ… Π½Π΅ трСбуСтся слоТных 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 3D-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ выглядит понятнСС. Π’Π°ΠΊΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ популярны ΠΊΠ°ΠΊ Π½Π° дСсктопах, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах. Unity Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ².

Π—Π° послСдниС Π³ΠΎΠ΄Ρ‹ Π²Ρ‹ΡˆΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ популярных Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€:

  • Battletoads – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ сСрии ΠΈΠ³Ρ€ Π² ΠΆΠ°Π½Ρ€Π΅ beat ’em up, Ρ„Π°ΠΉΡ‚ΠΈΠ½Π³;
  • Spiritfarer – ΠΈΠ³Ρ€Π° Π² ΠΆΠ°Π½Ρ€Π΅ Β«Ρ„Π΅Ρ€ΠΌΠ°Β», ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚;
  • Carrion – ΠΈΠ³Ρ€Π° Π² ΠΆΠ°Π½Ρ€Π΅ «уТасы», мСтроидвания;
  • Creaks – ΠΈΠ³Ρ€Π° Π² ΠΆΠ°Π½Ρ€Π΅ «квСст», Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ°;
  • Streets of Rage 4 – ΠΈΠ³Ρ€Π° Π² ΠΆΠ°Π½Ρ€Π΅ beat ’em up, Ρ„Π°ΠΉΡ‚ΠΈΠ½Π³.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация 2D-ΠΈΠ³Ρ€ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° отсутствия Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ измСрСния: Π½Π° самой сцСнС мСньшС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², вмСсто Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ плоскиС спрайты, вмСсто скСлСтной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ – покадровая. А Π΅Ρ‰Π΅ 2D-ΠΈΠ³Ρ€Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ – Π»Π΅Π³Ρ‡Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ создания 2D-ΠΈΠ³Ρ€ Π½Π° Unity

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π² ΠΆΠ°Π½Ρ€Π΅ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ πŸ“. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ созданию ΠΈΠ³Ρ€Ρ‹, ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. На ΠΏΠ΅Ρ€Π²Ρ‹Ρ… этапах рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ схСматичСскиС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстрСС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ этой инструкции ΠΌΡ‹ Ρ‚Π°ΠΊ ΠΈ поступим. ГрафичСских рСсурсов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ: ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ, ΠΈ ΠΎΡ‚Π±ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ мяч Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ простыми Π±Π΅Π»Ρ‹ΠΌΠΈ спрайтами.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ рассмотрим основныС понятия Unity, Π±Π΅Π· понимания ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ:

  • РСсурсили Asset – основной ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ для любого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Unity. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, трСхмСрная модСль, Π·Π²ΡƒΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€Π΅Ρ„Π°Π±Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, рСкомСндуСтся Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ рСсурсы Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Assets.
  • Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ»ΠΈ GameObject. Если рСсурс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сцСнС, Ρ‚ΠΎ ΠΎΠ½ становится ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ° – это рСсурс. Когда ΠΆΠ΅ ΠΌΡ‹ создадим Π½Π° сцСнС 20 ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠ², Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ 20 ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • ΠŸΡ€Π΅Ρ„Π°Π± – способ хранСния ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования ΠΈ клонирования с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ настройками. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅Ρ„Π°Π±Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всС Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ.
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ – исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС C#. ΠœΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒΡΡ ΠΊ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ„Π°Π±Π°ΠΌ.

ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ процСсс создания 2D-ΠΈΠ³Ρ€Ρ‹ Π½Π° Unity

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ установили Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ создали Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π΅ Unity.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ создадим Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ настройки (Edit β†’ Project Settings). Π’ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Editor установим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Default Behaviour Mode Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2D

Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
Π”Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом сохраним Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ сцСну, Π½Π°Π·Π²Π°Π² Π΅Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Scene1. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим основныС ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹: Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ, мяч ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈΠ³Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ основная Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€Ρ‹.

1. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Π² GameManager.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

2. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ C#-скрипт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ GameManager. АссоциируСм скрипт с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ GameManager, ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΠ² ΠΌΡ‹ΡˆΠΊΠΎΠΉ скрипт Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ C# скрипт

3. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ спрайт, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Pad (Assets β†’ Create β†’ Sprites β†’ Square). Аналогично создаСм ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΉ спрайт Ball (Assets β†’ Create β†’ Sprites β†’ Circle). ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ спрайт Pad со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ – x:0.5, y:2.5, z:1.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ спрайты

4. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€Π΅Ρ„Π°Π±Ρ‹ для Pad ΠΈ Ball, послС Ρ‡Π΅Π³ΠΎ добавляСм ΠΊ Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Box Collider 2D (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Is Trigger) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Rigidbody 2D (выставляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Body Type Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Kinematic).

ДобавляСм .ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Box Collider 2D
НастраиваСм.ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Box Collider 2D
ДобавляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Rigidbody 2D
ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ спрайты

5. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ C#-скрипты Ball ΠΈ Pad. АссоциируСм ΠΈΡ… с ΠΏΡ€Π΅Ρ„Π°Π±Π°ΠΌΠΈ.

6. ЗаполняСм скрипты ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

GameManager.cs
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class GameManager : MonoBehaviour
{
    // ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ пСрСмСнная для Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΡ€Π΅Ρ„Π°Π±ΠΎΠΌ Pad
    public Pad pad;

    // ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ пСрСмСнная для Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΡ€Π΅Ρ„Π°Π±ΠΎΠΌ Pad
    public Ball ball;

    // ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ пСрСмСнная со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана
    public static Vector2 bottomLeft;

    // ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ пСрСмСнная со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана
    public static Vector2 topRight;

    void Start()
    {
        // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана
        bottomLeft = Camera.main.ScreenToWorldPoint(new Vector2(0,0));

        // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°
        topRight = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, Screen.height));

        // создаСм мяч
        Instantiate(ball);

        // создаСм Π΄Π²Π΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ
        Pad padVar1 = Instantiate (pad) as Pad;        
        Pad padVar2 = Instantiate (pad) as Pad;
        padVar1.Init (true);   // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π»Π΅Π²ΡƒΡŽ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ
        padVar2.Init (false); // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€Π°Π²ΡƒΡŽ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ
    }
}
Ball.cs
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using UnityEngine;

public class Ball: MonoBehaviour
{
    [SerializeField]
    float speed;

    float radius;
    Vector2 direction;

    void Start()
    {
        direction = Vector2.one.normalized;
        radius = transform.localScale.x / 2;
    }

    void Update()
    {
        // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ мяча
        transform.Translate(direction * speed * Time.deltaTime);

        // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ столкновСния с краями экрана
        if(transform.position.y < GameManager.bottomLeft.y + radius && direction.y < 0)
        {
            direction.y = -direction.y;
        }

        if (transform.position.y > GameManager.topRight.y - radius && direction.y > 0)
        {
            direction.y = -direction.y;
        }

        // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΈΠ³Ρ€ΠΎΠΊΠ°
        if (transform.position.x < GameManager.bottomLeft.x + radius && direction.x < 0)
        {
            UnityEngine.Debug.Log("Right win");
        }

        if (transform.position.x > GameManager.topRight.x - radius && direction.x > 0)
        {
            UnityEngine.Debug.Log("Left win");
        }

    }

    // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ столкновСниС Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ ΠΈ мяча
    void OnTriggerEnter2D(Collider2D other)
    {
        if(other.tag == "Pad")
        {
            bool isRight = other.GetComponent<Pad>().isRightPad;
            if (isRight == true && direction.x > 0)
            {
                direction.x = -direction.x;
            }

            if (isRight == false && direction.x < 0)
            {
                direction.x = -direction.x;
            }
        }
    }
}
Pad.cs
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Threading;
using UnityEngine;

public class Pad : MonoBehaviour
{
    [SerializeField]
    float speed;

    float height;
    string inpt;
    public bool isRightPad;

    // ВызываСтся Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ³Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π΄Ρ€Π°
    void Start()
    {
        height = transform.localScale.y;
    }

    public void Init(bool isRight)
    {
        isRightPad = isRight;
        Vector2 pos = Vector2.zero;

        // ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ. Для Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ - ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.
        if (isRight)
        {
            pos = new Vector2(GameManager.topRight.x, 0);
            pos -= Vector2.right * transform.localScale.x;
            inpt = "PadRight";
        } else {
            pos = new Vector2(GameManager.bottomLeft.x, 0);
            pos += Vector2.right * transform.localScale.x;
            inpt = "PadLeft";
        }

        transform.position = pos;
        transform.name = inpt;
    }

    void Update()
    {
        // Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ Π·Π° края экрана, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° экранС
        float move = UnityEngine.Input.GetAxis(inpt) * Time.deltaTime * speed;

        if(transform.position.y < GameManager.bottomLeft.y + height/2 && move < 0)
        {
            move = 0;
        }

        if (transform.position.y > GameManager.topRight.y - height / 2 && move > 0)
        {
            move = 0;
        }

        transform.Translate(move * Vector2.up);
    }
}

6. ДобавляСм ΠΊ ΠΏΡ€Π΅Ρ„Π°Π±Ρƒ Ball ΠΈ Pad Ρ‚Π΅Π³ΠΈ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π’Ρ‹Π΄Π΅Π»ΠΈΠ² ΠΏΡ€Π΅Ρ„Π°Π±Ρ‹, Π² инспСкторС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список Ρ‚Π΅Π³ΠΎΠ². Π’Π°ΠΌ ΠΆΠ΅ располоТСны ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ для добавлСния ΠΈ рСдактирования Ρ‚Π΅Π³ΠΎΠ².

7. Π’ настройках ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ выставляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Projection Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Orthographic, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Clear Flag – Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Solid Color.

Настройка ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

8. НастраиваСм ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°Ρ… (Edit β†’ Project Settings β†’ Input Manager).

Настройка Π²Π²ΠΎΠ΄Π°, основноС
Настройка Π²Π²ΠΎΠ΄Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠΊ
Настройка Π²Π²ΠΎΠ΄Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΊ

Π’ΠΎΡ‚ ΠΈ всё, ΠΈΠ³Ρ€Π° Π³ΠΎΡ‚ΠΎΠ²Π°!

Пинг-ΠΏΠΎΠ½Π³, ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π‘ΠΈΠ»Π΄ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹

1. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» ΠΎΡ‚ Unity, Π³Π΄Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрСн процСсс создания roguelike RPG.

2. Youtube-ΠΊΠ°Π½Π°Π» Brackeys, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠ΅Ρ€ΠΈΡŽ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΎΠ² ΠΏΠΎ созданию 2D-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€Π°.

3. Youtube-ΠΊΠ°Π½Π°Π» N3K EN содСрТит мноТСство ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΊΠ°ΠΊ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Unity, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ сСрии ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΏΠΎ созданию ΠΈΠ³Ρ€ с нуля.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° Π½Π°ΡˆΠΈΡ… Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π°Ρ… Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста» ΠΈ «Книги для программистов».
***

Π₯ΠΎΡ‡Ρƒ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с нуля, Π½ΠΎ Π½Π΅ знаю, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

МоТно ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π΄ΠΎΠ»Π³ΠΎ) ΠΈΠ»ΠΈ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π° курсы с прСподаватСлями (быстро). Плюс Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΆΡƒΠ½ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, конкурСнция Π²Ρ‹ΡˆΠ΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΎΠ΄Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния ΠΏΡ€ΠΈ Π½Π°ΠΉΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ знания, ΠΌΡ‹ Π² proglib.academy запустили курсы:

  • ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° Python.
  • ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΡ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.
  • Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Data Science.
  • ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΡ Data Science.
  • Frontend Basic: ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ соврСмСнного Π²Π΅Π±Π°.
  • ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΡ Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° СстСствСнного языка. ΠŸΠΎΠ»Π½Ρ‹ΠΉ курс.

На ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π΅Ρ‰Π΅ большС 10 курсов для взрослых ΠΈ Π΄Π΅Ρ‚Π΅ΠΉ.

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

matyushkin
18 ΠΌΠ°Ρ€Ρ‚Π° 2020

ВОП-10 ΠΊΠ½ΠΈΠ³ ΠΏΠΎ C#: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

ΠžΡ‚ΠΎΠ±Ρ€Π°Π»ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ C#, .NET, Unity c Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌΠΈ. РасполоТил...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
25 августа 2019

ΠŸΠΎΡ‡Π΅ΠΌΡƒ C# программисты скоро Π±ΡƒΠ΄ΡƒΡ‚ нарасхват

C# программисты становятся Π±ΠΎΠ»Π΅Π΅ вострСбованными благодаря Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉΡΡ эк...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
23 июня 2017

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ – это просто: 12 этапов изучСния Π³Π΅ΠΉΠΌΠ΄Π΅Π²Π°

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ Π½Π° ΠΏΠ»Π°Π²Ρƒ, ΠΎΠ½Π° пСрспСктивна ΠΈ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ. ΠœΡ‹ ΠΏΠΎΠ΄Π³ΠΎ...