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.