IT
July 26, 2023

Акселерометр в Unity 2D и 3D

Одной из крутых функций Unity является поддержка акселерометра, который позволяет игровым объектам реагировать на движение устройства пользователя. В этой статье я расскажу, как использовать акселерометр в Unity, а также представлю пример кода для наглядности.

Акселерометр - это устройство, которое может измерять различные физические движения, такие как ускорение и ориентацию. В мобильных устройствах акселерометр обычно расположен внутри смартфона или планшета и реагирует на физическое движение устройства.

Прежде чем начать использовать акселерометр в Unity, убедитесь, что ваш проект настроен для работы с мобильными устройствами. Для этого выберите "File" (Файл) -> "Build Settings" (Настройка проекта) и установите целевую платформу на "Android" или "iOS". Также вам потребуется настроить доступ к акселерометру в настройках устройства.

Чтобы начать использовать акселерометр в Unity, создайте новый пустой объект в вашей сцене и добавьте следующий скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AccelerometerControl : MonoBehaviour
{
    public float speed = 10f;
    Rigidbody rb;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    
    void FixedUpdate()
    {
        float moveHorizontal = Input.acceleration.x;
        float moveVertical = Input.acceleration.z;
        
        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
        
        rb.AddForce(movement * speed);
    }
}

В этом примере мы используем класс `Input`, который предлагает Unity для доступа к устройствам ввода. `Input.acceleration.x` и `Input.acceleration.z` предоставляют значения акселерометра по горизонтали и вертикали соответственно. Затем мы создаем вектор движения на основе этих значений и добавляем его к компоненте `Rigidbody` объекта, чтобы он начал двигаться.

Unity предоставляет множество других функций, которые вы можете использовать с акселерометром, таких как вращение объектов, изменение размера и многое другое.

Код для акселерометра в 2D:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallControl : MonoBehaviour
{
    [SerializeField] private Rigidbody2D _ballRigid;
    [SerializeField] private float _force;

    private void FixedUpdate()
    {
        Vector2 acceleration = Input.acceleration;
        _ballRigid.velocity = new Vector2(acceleration.x * _force, acceleration.y * _force);
    }
}

В заключение, акселерометр является мощным инструментом для создания интересных и вовлекающих игровых механик в Unity. Надееюсь, что этот пример кода и статья помогут вам начать использовать акселерометр в ваших проектах.

Удачи в разработке игр на Unity!