Visão geral do novo sistema de entrada do Unity

O novo sistema de entrada em Unity fornece uma abordagem atualizada, flexível e mais intuitiva para lidar com entradas em jogos. Com este sistema, os desenvolvedores podem atender a uma variedade de dispositivos, desde controladores de jogos até aparelhos VR, tornando a jogabilidade mais dinâmica e envolvente.

1. Por que o novo sistema

O sistema de entrada tradicional em Unity era limitado em suas capacidades e não tão extensível. O Novo Sistema de Entrada oferece uma API unificada, abordando limitações anteriores e fornecendo recursos avançados para o desenvolvimento de jogos modernos.

2. Configurando

Para começar a usar o Novo Sistema de Entrada, ele deve primeiro ser instalado a partir do Gerenciador de Pacotes em Unity. Depois de adicionada, a transição do sistema antigo requer certos ajustes em scripts e configurações.

3. Características principais

  • Ações e vinculações: Em vez de fazer referência direta a botões ou teclas, os desenvolvedores definem ações e, em seguida, vinculam essas ações a teclas ou botões específicos.
  • Variabilidade de dispositivos: Suporta facilmente vários dispositivos, desde gamepads tradicionais até telas sensíveis ao toque e aparelhos VR.
  • Controles do jogador: Fornece um mecanismo integrado para religar os controles, permitindo que os jogadores configurem os controles como preferirem.
  • Tratamento avançado de eventos:Eventos podem ser processados ​​de várias maneiras, seja com base em polling ou com base em retorno de chamada, garantindo mais controle.

4. Criando uma ação de entrada

Uma Ação de Entrada é um novo tipo de ativo que permite a definição de comportamentos de entrada sem a necessidade de escrever scripts. Uma vez criado, ele pode ser colocado em um script, conectando a jogabilidade diretamente às entradas do jogador.

5. Implementação em scripts

  • O novo sistema de entrada integra-se perfeitamente ao ambiente de script Unity. Em vez dos métodos mais antigos 'Input.GetKey' ou 'Input.GetAxis', este sistema usa ´ações´ que podem ser chamadas dentro de scripts. Confira o exemplo abaixo:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

Vamos analisar o exemplo de código fornecido acima:

  • Namespaces: O namespace 'UnityEngine.InputSystem' é essencial para utilizar as novas funcionalidades.
  • 'moveInput': esta variável armazena os valores de entrada, geralmente representando entradas horizontais e verticais.
  • 'OnMove()': Definida como uma função pública, 'OnMove' pode ser vinculada diretamente a uma Ação de Entrada no Editor Unity. O método utiliza 'InputAction.CallbackContext' para ler os valores de entrada e atribuí-los à nossa variável 'moveInput'.
  • 'Update()': No método 'Update', os valores de entrada armazenados determinam a direção do movimento. A entrada é traduzida em um vetor 3D para movimento do personagem, levando em consideração a velocidade definida e Unity 'Time.deltaTime' para movimento independente de quadro.

Para fazer esse script funcionar, é importante vincular o método 'OnMove' a uma ação de entrada por meio do editor Unity. Essa conexão garante que quando um jogador fornece uma entrada (como mover um joystick ou pressionar as teclas de seta), a ação correspondente aciona o script desejado function.

Conclusão

O novo sistema de entrada em Unity é uma evolução poderosa e necessária, alinhando-se às necessidades do desenvolvimento de jogos modernos. Ele oferece versatilidade, precisão e personalização do usuário, tornando as interações do jogo mais envolventes e responsivas.