ΡΠΊΡΠΈΠΏΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° Π² ΡΠ½ΠΈΡΠΈ 3Π΄
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Unity Character Controller (ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°)?
ΠΠΎΠΌΠ°Π½Π΄Π° 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. ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ! ΠΡΠ»ΠΈΡΠ½ΠΎ, ΡΠΊΡΠΈΠΏΡ ΡΠΎΠ·Π΄Π°Π½ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΡ!
ΠΡΠΊΡΠΎΠ΅ΠΌ Π΅Π³ΠΎ, ΠΊΠ»ΠΈΠΊΠ½ΡΠ² ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π²Π° ΡΠ°Π·Π°.
Π ΡΡΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ΅ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ΅ΡΠ²Π°Ρ β ΡΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° CharaΡterController. ΠΡΠΎΡΠ°Ρ β ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. Π’ΡΠ΅ΡΡΡ-ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°. Π ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 1 ΠΈ 3 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ Start, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΡΠ΅Π½Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΠΉΠ΄Π΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CharacterController ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ GameObject ΡΡΠΎ ΠΈ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Update. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π΄Ρ. Π Π½Π΅Π³ΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π½Π°Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ Y, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΡ leftArrow ΠΈ RightArrow.
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π·Π°Π΄Π°Π΅ΠΌ, ΠΊΡΠ΄Π° Π½Π°ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ. Π’ΠΎΡΠ½Π΅Π΅ β Π²Π΅ΠΊΡΠΎΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ½ Ρ Π½Π°Ρ forward ΠΈΠ»ΠΈ z.
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π°ΠΆΠ°ΡΠ°, ΠΎΠ½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ. Π’ΠΎ Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈ Π½Π°Π·Π°Π΄.
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π½Π° Character Controller.
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² Unity. ΠΠ° Π½Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄Π²Π° ΡΠΊΡΠΈΠΏΡΠ° Charaster Controller ΠΈ Player.
ΠΠΌΠ΅ΠΌ Play ΠΈ ΡΡΡΠ΅Π»ΠΎΡΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°. Π£ΡΠ°Π°Π°, ΠΏΠΎΠ±Π΅ΠΆΠ°Π»ΠΈ!
ΠΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°
ΠΠΎΡΠ΅ΠΌΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠΊΠ²ΠΎΠ·Ρ Π΄ΡΡΠ³ΠΎΠΉ Ρ ΠΎΡΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅ΡΡ Π½Π° ΠΎΠ±ΠΎΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ?
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠΎΠΉ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠΊΠ²ΠΎΠ·Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΠΏΠΎΡΠΎΠΌ Π΅Π³ΠΎ ΠΎΡΠΊΠΈΠ΄ΡΠ²Π°Π΅Ρ Π½Π°Π·Π°Π΄?
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° Π² Unity3d ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· transform.position ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠΎΠΉ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Ρ ΡΠ°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄Π°Π΅Ρ FPS?
ΠΠΎΡΠ΅ΠΌΡ Π΄Π²ΠΈΠ³Π°ΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° ΡΠ΅ΡΠ΅Π· ΡΠΌΠ΅Π½Ρ transform.position Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΡΠΆΠΎΠΊ ΠΎΡ ΠΏΠΎΠ»Π°, Π½ΠΎ ΡΠ°ΠΊ ΡΡΠΎ Π±Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ Π½Π΅ ΠΌΠΎΠ³ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π²Π·Π»Π΅ΡΠ°ΡΡ
ΠΡΠ΅ ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π΅Π΄ΠΈΠ½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΆ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
ΠΠ°ΠΎΠ΄Π½ΠΎ ΡΠΎΠ·Π΄Π°Π» ΡΡΠ³ unity3d-faq
1 ΠΎΡΠ²Π΅Ρ 1
ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ
Π₯ΠΎΡΡ Ρ Π·Π΄Π΅ΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Ρ Π² Ρ.Ρ. Π½Π΅ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π€ΠΠΠΠ§ΠΠ‘ΠΠΠ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Π ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° Π½Π΅ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ .
Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π΄Π΅ΡΡ 2 ΡΠ΅ΡΠΌΠΈΠ½Π°: «ΡΠ΅Π»Π΅ΠΏΠΎΡΡΠ°ΡΠΈΡ» ΠΈ «ΠΏΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅». Π ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ:
ΠΡΡΡ Π»ΡΠ΄ΠΈ Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ.
Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½ΠΈΠΆΠ΅ ΡΠΏΠΈΡΠ°Π΅ΡΡΡ Π² Π²Π΅ΡΡ Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², Π° Π½Π΅ ΡΡΠΈ.
ΠΠ²ΠΈΠ³Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΈΠ³ΡΠΎΠ²ΡΡ Π΄Π²ΠΈΠΆΠΊΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ (Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°)
ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π· CharacterController (Π·Π΄Π΅ΡΡ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Ρ.ΠΊ. Π½ΠΎΠ²ΠΈΡΠΊΠΈ Π² Π΅Π³ΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠΌΠΎΡΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ, ΠΏΠΎΠ·ΠΆΠ΅ ΡΠ°ΡΠΏΠΈΡΡ)
ΠΠΎΠ²ΠΈΡΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π»Π΅ΠΏΠΎΡΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅, ΡΡΠΎ Π΅ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ. ΠΠΎΡΠΎΠΌ Π½Π° SO ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΡΡΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ² Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π²ΡΠΎΠ΄Π΅ «ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° Π΄Π΅ΡΠ³Π°Π΅Ρ Π²ΠΎΠ·Π»Π΅ ΡΡΠ΅Π½Ρ?» ΠΈΠ»ΠΈ «ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠΊΠ²ΠΎΠ·Ρ ΡΡΠ΅Π½Ρ?» ΠΈΠ»ΠΈ «ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠ»Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°Π½ΠΎΡΠΈΡ ΡΡΠΎΠ½?» ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅.
ΠΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: ΠΠ²ΠΈΠ³Π°ΡΡ/ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ transform.position / transform.rotation Π½Π΅Π»ΡΠ·Ρ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π²Π°ΠΌ Π²ΡΠ»Π΅Π·Π΅Ρ Π±ΠΎΠΊΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ:
( Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΡΠ°ΡΠ° )
Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΏΠ΅ΡΡΡΡΡΠΈΡ Π΄ΠΈΡΡΡ ΡΠΎΡΡΠΌΠΎΠ², Π² Ρ.Ρ. ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π²ΠΎΠΏΡΠΎΡΠΎΠ²/ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎΡ ΡΠ½ΠΈΡΠΈ. Π’Π°ΠΌ Π² ΡΠ°ΠΊΠΈΡ ΡΠ΅ΠΌΠ°Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ ΠΏΠΈΡΡΡ ΠΎΡΠ²Π΅ΡΡ ΡΠ΅ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅.
Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎΠ½ΡΡΠΈΡ:
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ RigitBody) ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΠΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ.
ΠΠ»ΠΈ ΠΊΡΡΡΡΡΠΈΠΉΡΡ ΠΊΡΠ± Π½Π° Π½Π΅Π±ΠΎΡΠ²ΠΎΠ΄Π΅.
ΠΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄Π΅ΡΠ³Π°ΡΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠ΅Π΄Π°Π½ΠΈΠΈ ΠΊΠ°Π΄ΡΠΎΠ² Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΠΠ€ΠΠΠΠ§ΠΠ‘ΠΠΠ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π² Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ:
ΠΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΌΡ ΡΠ°Π·ΠΎΠ²ΠΎ Π·Π°Π΄Π°Π΅ΠΌ Π²Π΅ΠΊΡΠΎΡ ΡΠΊΠ°ΡΠΊΠ°. Π’ΠΎΠ»ΡΠΊΠΎ 1 Π΄ΠΎΠ»Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡ ΠΏΠΎΠ΄ ΡΠΈΠ»ΠΎΠΉ ΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ° Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π½ΡΠ»Π΅Π²ΡΠΌ (Π²Π΅ΡΡ Π½ΡΡ ΡΠΎΡΠΊΠ° ΠΏΡΡΠΆΠΊΠ°), Π° ΠΏΠΎΡΠΎΠΌ Π½Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ Π² ΠΌΠΈΠ½ΡΡ ΠΏΠΎ Y (ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅), Π° ΠΏΠΎΡΠΎΠΌ Π½Π΅ ΡΠΏΠ°Π΄Π΅Ρ Π½Π° Π·Π΅ΠΌΠ»Ρ ΠΈ Π½Π΅ ΠΎΡΡΠΊΠΎΡΠΈΡ ΠΎΡ Π½Π΅Π΅ (ΡΠ½ΠΎΠ²Π° ΠΏΠ»ΡΡ ΠΏΠΎ Y ) ΠΈ ΡΠ°ΠΊ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π·Π΅ΠΌΠ»Π΅.
ΠΡΠ»ΠΈ Π΄Π΅Π²Π°ΠΉΡ Ρ ΠΈΠ³ΡΠΎΠΉ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½, Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Update() / FixedUpdate() ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ. Π Π΅ΡΠ»ΠΈ Π² ΡΠΈΠ·ΠΈΠΊΠ΅ ΡΡΠΎ ΡΡΡΠ΅Π½ΠΎ ΠΈ Π±Π΅Π· Π½Π°Ρ, ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΠ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ-ΡΡΠΎΠΌΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ.
ΠΠΎ ΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ Ρ Π½Π°Ρ Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠ²Π°Π»Π°ΠΌΠΈ ΡΠΊΠ²ΠΎΠ·Ρ ΡΡΠ΅Π½Ρ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΊΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π½ΠΎ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΠΠ€ΠΠΠΠ§ΠΠ‘ΠΠΠ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°.
ΠΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π΄Π²ΠΈΠ³Π°Π»ΠΈ ΡΠ°Ρ, ΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π΅Π³ΠΎ ΡΠΎΠ»ΠΊΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ·.ΠΌΠΎΠ΄Π΅Π»Ρ. Π’ΠΎ Π΅ΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ AddForce() Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π΄Π°Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°. ΠΡ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΠ»ΡΠ΅ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π½Π΅-ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅, Π½ΠΎ ΠΠΠΠΠΠΠ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅:
Π‘ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π‘ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Ρ Π½Π°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΡΠΎΠ΄Π΅ ΡΠΊΠ°ΡΠΊΠΎΠ² ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅Π΄Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° FPS, ΠΏΡΠΎΠ²Π°Π»ΠΈΠ²Π°Π½ΠΈΠΉ, Π΄Π΅ΡΠ³Π°Π½ΠΎΡΡΠΈ, ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Ρ ΡΡΠ΅Π½Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΠ΅ΠΉ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π±Π΅Π³Π° Π½Π° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° (Π½Ρ Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ» Π½Π΅ ΠΊΡΠ±).
ΠΠΎ ΠΊΠ°ΠΊ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΈΠ·ΠΈΠΊΠ΅?
ΠΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π½Π° ΡΠΈΠ·ΠΈΠΊΠ΅.
ΠΠ°ΡΠ° ΠΏΡΠΎΡΠ»Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠΌΠ΅Π»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². Π ΠΈΠΌΠ΅Π½Π½ΠΎ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° Π½Π°Ρ ΠΊΡΠ± CapsuleCollider (ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° ΡΠΈΠ»Ρ ΡΡΠ΅Π½ΠΈΡ) ΠΈ Π·Π°Π±Π»ΠΎΡΠΈΠΌ Π² rigitBody rotateX ΠΈ rotateZ (ΡΡΠΎ Π± Π½Π°Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ Π½Π΅ ΠΏΠ°Π΄Π°Π» Π½Π° Π±ΠΎΠΊ).
Π ΠΏΠΎΡΠΎΠΌ Π½Π°ΡΠ΅ΠΏΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ:
ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡ ΠΏΠ»Π°Π²Π½ΠΎΡΡΡ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π±Π΅ΠΆΠΈΡ, ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, Π±Π΅ΠΆΠΈΡ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠΎΡΠΎΠ½Ρ? ΠΡΠ°ΡΠΎΡΠ°!
Π ΡΠ΅ΠΏΠ΅ΡΡ Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊ ΠΏΡΠΎΡΠ»ΠΎΠΉ Π³ΠΈΡΠΊΠ΅ ΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠΈΡΠ΅ΡΡ. ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊΠΎΠ΅ π Π’Π°ΠΌ ΠΊΠ°ΠΊ Π±ΡΠ΄-ΡΠΎ ΡΡΠΊΠΎΠΉ Π΄Π²ΠΈΠ³Π°ΡΡ ΡΠ°Ρ ΠΌΠ°ΡΠ½ΡΡ ΡΠΈΠ³ΡΡΡ ΠΏΠΎ Π΄ΠΎΡΠΊΠ΅.
ΠΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ Π±Π°Π³ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΠΎΡΠΈΠΊΡΠ΅Π½Ρ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π½Π°ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΡ ΠΈ ΠΎΡΠΊΠΎΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΠΎΠΎΠ±ΡΠ΅ ΡΠ»ΡΡΡΠ°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ. ΠΠΎ, Π΄ΡΠΌΠ°Ρ, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π‘ΠΠΠ‘ΠΠΠΠ ΠΠΠ ΠΠΠΠΠΠΠΠΠ― Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ, Ρ Π·Π°ΡΡΠΎΠ½ΡΠ» π
ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ ΡΠΈΠ·ΠΈΠΊΠΈ.
ΠΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΠΊΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ Π»ΡΠ±ΠΈΠΌΠ΅ΠΉΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΠΊΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ³ΡΠ° Ori and the Blind Forest
Π’Π°ΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅/ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΡΠΆΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΠΊΠΈ. ΠΠ΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΎΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ + ΠΊΠΎΡΡΡΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΡΡ ΡΡΠ΅ΠΊΡΠΎΠ².
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΠ½ΠΈ Π΄Π΅Π»Π°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΈΠ³ΡΡΠ°ΠΌΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ (Π΅ΡΠ»ΠΈ ΡΡΠ°Π½Π΅Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Ori and the blind forest Enemy Concepts ) :
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½ΠΎ ΠΈ Π΅Π³ΠΎ Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΡ/ΡΠΆΠ°ΡΠΈΡ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ. Π Ρ.Ρ. Π²ΡΡΡΡΠ΅Π»Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΎΡΠΌΡ. Π ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°Π΄ΠΈΡΡΡ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π³Π΅ΡΠΎΡ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π²ΡΠ°Π³ΠΎΠΌ.
ΠΠΎΡΡΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°/Π²ΡΠ°Π³Π° ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΎΠ±Π»Π°Π΄Π°Π» ΡΠ²ΠΎΠ΅ΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΠΊΠΎΠΉ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΉ ΡΠΈΠ·ΠΈΠΊΠ΅ Π½Π°Π²ΡΡΠ΄ Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ «ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ» Π½ΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΎΠ»Π΅ΡΠ°Π΅Ρ ΡΠΊΠ²ΠΎΠ·Ρ ΡΡΠ΅Π½Ρ
ΠΠΠΠ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡ ΡΠ°ΠΊΠΎΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠ΅Ρ CollisionDetect ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ Π±ΡΠ²Π°Π΅Ρ.
ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ CollisionDetect Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ RigitBody.
ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ Ρ.ΠΊ. ΡΡΠΎ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π§Π΅ΠΌ Π½Π° Π±ΠΎΠ»ΡΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²Ρ ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠΎ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π΄ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π‘ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΎ ΡΠΏΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΡΡΠ³ΠΎΠΌ, Π° Π½Π΅ ΠΏΠ°Π½Π°ΡΠ΅Π΅ΠΉ. Π Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΠΊ Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ, ΡΠΎ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ ΠΏΡΠΈΠΉΠ΄Π΅ΡΠ΅ Π½Π° SO Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠ³ΡΠ° ΡΠΎΡΠΌΠΎΠ·ΠΈΡ, Π²Π°Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΡΠΌΠΎΠ·ΠΎΠ² Π½Π΅ Π² ΠΊΠΎΠ΄Π΅. Π Π½Π°ΠΌΡΡΠ°Π΅ΡΠ΅ΡΡ Π²Ρ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΠΎΠΉ ΠΊΠ°ΠΊ ΡΠΈΠ»ΡΠ½ΠΎ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ Π² Unity
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Asset ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Unity ΠΈΠΌΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΌΡΡΠΈ, Π½ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΡΡΠΈ (Β«Diablo-styleΒ»). Π‘ΠΊΡΠΈΠΏΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° C#.
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();
>
>
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·ΠΎΠ½Ρ ΡΡΠΈΠ³Π³Π΅ΡΠ°, ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ ΡΡΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ ΠΏΡΠΈΠ±ΡΠ» Π² ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ «ΠΎΠ½» ΡΡΠΈΠ³Π³Π΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π΄ΠΈΡΡ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°) ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ Π·Π°Π²ΠΈΡΠΈΡ.
Π£ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° Π² ΡΠΊΡΠΈΠΏΡΠ΅ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠ° ΠΊΠ°ΠΌΠ΅ΡΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ»Ρ ΡΠ΅Π»ΠΈ, ΠΈΠ³ΡΠΎΠΊΠ° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈ ΡΠ»ΠΎΠΉ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ «Π»ΠΎΠ²ΠΈΡΡ» ΠΊΠ»ΠΈΠΊΠΈ, ΠΈ ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ Ρ
ΠΎΠ΄ΠΈΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Ρ Π·Π°Π²Π΅Π» ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ Terrain ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ» Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΌΡ ΡΠΎΠ»Ρ Π·Π΅ΠΌΠ»ΠΈ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅, ΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅.
Unity β Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ gameObject ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π²Π²Π΅ΡΡ , Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡΠ°Π²ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Unity.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Β«ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅Β».
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎ ΠΆΠ΅, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠΎΠΊΠ΅.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π½ΡΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π½ΡΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅.
ΠΡΠ»ΠΈ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ, Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Unity.
(ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠΎΠΊ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ.)
ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ· Π°ΠΊΡΠΈΠ²ΠΎΠ² Π² GameObject. ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ GameObject β
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ update () Π²ΠΌΠ΅ΡΡΠΎ start ().
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π»ΠΈ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ β
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.
ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π²Π²ΠΎΠ΄Ρ.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ β
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.
ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π²Π²ΠΎΠ΄Ρ.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ β
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΊΠΎΠ΄ Π² ΠΊΡΠ°ΡΠΊΠΎΠΌ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ»Π°ΡΡ Input ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π²ΠΈΠ΄Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, Π²Π²ΠΎΠ΄Π° ΠΌΡΡΡΡ, Π²Π²ΠΎΠ΄Π° Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ΅ΡΠΎΠ΄ GetAxisRaw Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΏΠΎΠ·ΠΆΠ΅.
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π² Unity. Unity Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ Π²ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ GameObject Π½Π° 0,8. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡ ΠΈΠ³ΡΠΎΠΊΠ° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΡΡΡΡΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΆΠΌΠΈΡΠ΅ Play ΠΈ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ ΠΈΠ³ΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ!
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ³ΡΡ, ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ 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 ;
>
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΡ.
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΠΎΠΌΠΎΡΡ.