ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

Код для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

НаТимаСм Β«Add component>>Physics>>RigidbodyΒ» ΠΈ Β«Add component>>Physics>>Capsule ColliderΒ». Π’ Β«Capsule ColliderΒ» ВыставляСм Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ нашСй капсулы Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, слСгка Ρ‡ΡƒΡ‚ΡŒ большС модСльки самой.
ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄
Π’ Β«RigidbodyΒ» ставим Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Β«Use gravityΒ». РаскрываСм Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«ConstraintsΒ» ΠΈ ставим всС 3 Π³Π°Π»ΠΎΡ‡ΠΊΠΈ Π½Π° Β«Freeze RotationΒ». Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ наш пСрсонаТ Π½Π΅ проваливался сквозь зСмлю, Π½Π΅ ΠΏΠ°Π΄Π°Π» Π½Π° зСмлю Ссли Π²Π΄Ρ€ΡƒΠ³ окаТСтся Π½Π° нСровности ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ пСрсонаТа Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ c# скрипт Β«movePlayerΒ».

200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
using System.Collections;

public class movePlayer : MonoBehaviour <

private GameObject player; //ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° пСрсонаТа с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

public static int speed = 6; //Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ пСрСмСщСния пСрсонаТа. Π—Π°ΠΏΠΈΡΡŒ public static ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ смоТСм ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· любого скрипта
public static int _speed; //постоянная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ пСрСмСщСния пСрсонаТа
public int rotation = 250; //Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° пСрсонаТа
public int jump = 3; //Высота ΠΏΡ€Ρ‹ΠΆΠΊΠ°

//ΠŸΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ пСрсонаТа. Π’Π°ΠΊ ΠΊΠ°ΠΊ наша пСрСмСнная x глобальна, ΠΈΠ· скрипта ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π² Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π½Π° сколько смСстился ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΏΠΎ оси X ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ наш пСрсонаТ
Quaternion rotate = Quaternion.Euler (0,x,0); //Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° Quaternion для задавания ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°
player.transform.rotation = rotate; //ΠŸΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ пСрсонаТ

200?’200px’:»+(this.scrollHeight+5)+’px’);»> codeusing UnityEngine;
using System.Collections;

private float x = 0.0f; //Π£Π³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΏΠΎ Y?
private float y = 0.0f; //Π£Π³ΠΎ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΏΠΎ X?

[AddComponentMenu(«Scripts/Mouse Orbit»)] //ДобавляСм Π² мСню

public void Start() <
//ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΠΌ ΡƒΠ³Π»Ρ‹
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;

if(rigidbody)
rigidbody.freezeRotation = true; //Если ΠΊΠ°ΠΌΠ΅Ρ€Π° столкнСтся с Ρ„ΠΈΠ·.ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌΠΎΠ½Π° ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ
>

y = ClampAngle(y,yMinLimit, yMaxLimit); //Π’Ρ‹Π·Ρ‹Π² самописной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ограничСния ΡƒΠ³Π»ΠΎΠ² ΠΏΠΎΠ²Ρ€ΠΎΡ‚
movePlayer.x = x;
//ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ согласно ΠΏΠΎΡ‡Π΅Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ
Quaternion rotation = Quaternion.Euler(y, x, 0);
transform.rotation = rotation;

200?’200px’:»+(this.scrollHeight+5)+’px’);»> using UnityEngine;
using System.Collections;

public class AnimatePlayer : MonoBehaviour <

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄Π˜Ρ‚Π°ΠΊ для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ слСдуСт ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ сцСну. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ 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Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄Π–ΠΌΠ΅ΠΌ Play ΠΈ стрСлочками Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ нашСго пСрсонаТа. Π£Ρ€Π°Π°Π°, ΠΏΠΎΠ±Π΅ΠΆΠ°Π»ΠΈ!

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

gunderson / FlyCamera.cs

This comment has been minimized.

Copy link Quote reply

NaoWeik commented May 7, 2018

This comment has been minimized.

Copy link Quote reply

cloutiertyler commented May 12, 2018

Awesome, thanks so much for posting it.

This comment has been minimized.

Copy link Quote reply

Wingspear commented May 26, 2018

This comment has been minimized.

Copy link Quote reply

RyanBreaker commented Jun 23, 2018 β€’

Check my fork for a cleaned-up copy. Also reduced default values because they were crazy fast in my project and made them public for easy modification in Unity’s Inspector, as well as changing Space to instead move the camera up and adding Left Control for moving it down.

This comment has been minimized.

Copy link Quote reply

zetaFairlight commented Oct 30, 2018

Thank you! BTW Me too I had to adjust the sensitivity.

This comment has been minimized.

Copy link Quote reply

arthurmarquis commented Apr 3, 2019

The associated script can not be loaded. Please fix any complie errors and assign a valid script.

This comment has been minimized.

Copy link Quote reply

PittMichelmann commented Jun 12, 2019

Perfect! Thank you for the saved time =)

This comment has been minimized.

Copy link Quote reply

sirmagid commented Jul 19, 2019

This comment has been minimized.

Copy link Quote reply

Amshu commented Sep 14, 2019

You saved a lot of peoples time, thanks

This comment has been minimized.

Copy link Quote reply

apoteet commented Dec 5, 2019

The associated script can not be loaded. Please fix any compiler errors and assign a valid script.

This happens if the class name doesn’t match the file name

This comment has been minimized.

Copy link Quote reply

ToniHiTriplix commented Dec 21, 2019

What needs to be done so that the camera does not fly?

This comment has been minimized.

Copy link Quote reply

RandGor commented Jan 1, 2020

What needs to be done so that the camera does not fly?

I guess you should add this script to MainCamera

This comment has been minimized.

Copy link Quote reply

altysheff commented Jan 21, 2020

the mouse cursor rests on the edge of the monitor

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

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

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

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

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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

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

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для управлСния пСрсонаТСм Π½Π° ΡŽΠ½ΠΈΡ‚ΠΈ 3Π΄

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

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

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

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