Найти в Дзене
SHERO GAME

Простое управление персонажем в Unity

В этом руководстве мы создадим простое управление персонажем в Unity с помощью скриптов на C#. Подойдет для 2D или 3D игр. Создайте новый C# скрипт PlayerController и прикрепите его к персонажу. csharp Copy Download using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float rotationSpeed = 180f;
private CharacterController characterController;
void Start()
{
characterController = GetComponent<CharacterController>();
}
void Update()
{
// Движение вперед-назад и влево-вправо
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 moveDirection = new Vector3(horizontal, 0, vertical).normalized;
Vector3 moveVelocity = moveDirection * moveSpeed;
// Поворот персонажа
if (moveDirection != Vector3.zero)
{
Quaternion targetRotation = Quaternion.LookRotation(moveDirection);
Оглавление

В этом руководстве мы создадим простое управление персонажем в Unity с помощью скриптов на C#. Подойдет для 2D или 3D игр.

1. Настройка персонажа

Для 3D:

  1. Создайте объект (например, Player) и добавьте компонент Character Controller (если нужна физика) или управление без физики.
  2. Если используете Rigidbody, настройте массу и гравитацию.

Для 2D:

  1. Добавьте Rigidbody2D и установите Body Type на Dynamic.
  2. Поставьте галочку Freeze Rotation Z, чтобы персонаж не падал.

2. Написание скрипта управления

Создайте новый C# скрипт PlayerController и прикрепите его к персонажу.

Вариант для 3D (с Character Controller):

csharp

Copy

Download

using UnityEngine;

public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float rotationSpeed = 180f;
private CharacterController characterController;

void Start()
{
characterController = GetComponent<CharacterController>();
}

void Update()
{
// Движение вперед-назад и влево-вправо
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

Vector3 moveDirection = new Vector3(horizontal, 0, vertical).normalized;
Vector3 moveVelocity = moveDirection * moveSpeed;

// Поворот персонажа
if (moveDirection != Vector3.zero)
{
Quaternion targetRotation = Quaternion.LookRotation(moveDirection);
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
}

// Применяем движение
characterController.Move(moveVelocity * Time.deltaTime);
}
}

Вариант для 2D (с Rigidbody2D):

csharp

Copy

Download

using UnityEngine;

public class PlayerController2D : MonoBehaviour
{
public float moveSpeed = 5f;
private Rigidbody2D rb;

void Start()
{
rb = GetComponent<Rigidbody2D>();
}

void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

Vector2 movement = new Vector2(horizontal, vertical).normalized;
rb.velocity = movement * moveSpeed;
}
}

3. Дополнительные улучшения

  • Прыжок (для 3D):csharpCopyDownloadpublic float jumpForce = 5f;
    private bool isGrounded;

    void Update()
    {
    isGrounded = characterController.isGrounded;

    if (isGrounded && Input.GetButtonDown("Jump"))
    {
    moveVelocity.y = jumpForce;
    }

    // Добавляем гравитацию
    moveVelocity.y += Physics.gravity.y * Time.deltaTime;
    characterController.Move(moveVelocity * Time.deltaTime);
    }
  • Анимация – подключите аниматор и меняйте параметры в коде.

4. Тестирование

Запустите сцену и проверьте:

  • Движение на WASD или стрелки.
  • Прыжок на Space (если добавлен).

Теги для SEO

#Unity #УправлениеПерсонажем #GameDev #Unity3D #Unity2D #ИгроваяРазработка #CSharp #CharacterController #Rigidbody #IndieDev