Entrada

Esta página foi traduzida automaticamente e pode conter erros. Encontrou um problema? Use o link "Edit this page" para ajudar a corrigir.

O Turian oferece duas camadas, que podem ser usadas juntas:

  • Input — pergunte diretamente a um dispositivo: W está pressionado?
  • InputActions — pergunte sobre uma ação do jogo: Pular foi acionado? Quais teclas e botões acionam cada ação fica em um asset Input Actions que os designers editam e os jogadores podem remapear.

As duas funcionam sem mudanças no Play Mode do Studio e nos jogos exportados. Os códigos de teclas (Key.W, MouseButton.Left) vêm do Silk.NET; projetos novos importam esse namespace no Globals.cs.

Consultas a dispositivos

public class Mover : Component
{
    public float speed = 4f;

    public override void OnUpdate(float deltaTime)
    {
        var move = Vector3.Zero;
        if (Input.IsKeyDown(Key.W)) move.Z += 1;
        if (Input.IsKeyDown(Key.S)) move.Z -= 1;
        if (Input.WasKeyPressed(Key.Space)) Log.Logger.LogInformation("Pulo!");

        Node!.Transform.Position += move * speed * deltaTime;
    }
}
Consulta Retorna
Input.IsKeyDown(tecla) / WasKeyPressed(tecla) / WasKeyReleased(tecla) pressionada / pressionada neste quadro / solta neste quadro
Input.IsMouseButtonDown(botão), WasMouseButtonPressed, WasMouseButtonReleased o mesmo para botões do mouse
Input.MousePosition, Input.MouseDelta, Input.MouseScrollDelta posição do ponteiro, movimento neste quadro, roda
Input.ConnectedGamepads índices de jogador dos gamepads conectados
Input.IsGamepadButtonDown(botão, jogador), WasGamepadButtonPressed, WasGamepadButtonReleased botões do gamepad; jogador −1 significa qualquer um
Input.GetGamepadAxis(eixo, jogador) analógicos e gatilhos, de −1 a 1

Os botões do gamepad usam nomes posicionais — South, East, West, North (A/B/X/Y em um controle Xbox), ombros, Back, Start, cliques dos analógicos e o D-pad; os eixos são LeftStickX/Y, RightStickX/Y, LeftTrigger e RightTrigger.

Mapas de ações

1. Crie o asset

No painel Assets, botão direito → New → Input → Input Actions. Selecione-o para editá-lo no Inspector.

2. Defina mapas e ações

Um asset contém mapas (por exemplo Gameplay e Menu), e cada mapa contém ações:

Tipo de ação Leia com Exemplo
Button IsPressed, WasPressed, WasReleased Pular, Atirar, Pausar
Axis ReadAxis() (−1 a 1) Acelerador
Vector2 ReadVector() Mover, Olhar

Cada ação tem uma lista de bindings. Um binding nomeia um controle por um caminho — Keyboard/W, Mouse/Left, Mouse/DeltaX, Gamepad/South, Gamepad/LeftStickX — e um valor: o que um botão contribui quando pressionado, ou por quanto a leitura de um eixo é multiplicada. Uma ação Move com WASD tem, portanto, quatro bindings: W com (0, 1), S com (0, −1), A com (−1, 0) e D com (1, 0); um binding de analógico com (−1, 0) o inverte.

3. Torne-o as ações do projeto

Abra as Input Settings do projeto (em Assets/Settings/) e solte o seu asset em Actions. O jogo carrega esses mapas ao iniciar.

Lendo ações

public class PlayerController : Component
{
    public float speed = 5f;

    public override void OnUpdate(float deltaTime)
    {
        var move = InputActions.ReadVector("Gameplay/Move");
        Node!.Transform.Position += new Vector3(move.X, 0, move.Y) * speed * deltaTime;

        if (InputActions.WasPressed("Jump")) Jump();
    }

    void Jump() { /* … */ }
}

Nomeie uma ação como Mapa/Ação, ou só pelo nome para procurar em todos os mapas. Sem um asset de ações configurado, toda consulta retorna um valor neutro em vez de lançar exceção.

Chamada Efeito
InputActions.IsPressed(caminho) / WasPressed / WasReleased estado e transições do botão
InputActions.ReadAxis(caminho) / ReadVector(caminho) valores analógicos
InputActions.Find(caminho) a InputAction, com os eventos Started, Performed e Canceled
InputActions.SetMapEnabled("Gameplay", false) desliga um mapa inteiro — enquanto um menu está aberto, por exemplo

Remapeamento em tempo de execução

InputActionService permite que um menu de opções remapeie controles:

var service = InputActions.Service!;
var jump = service.Find("Gameplay/Jump")!;

var rebind = service.StartRebind(jump, bindingIndex: 0);   // escuta a próxima tecla ou botão
// … a cada quadro, verifique rebind.IsComplete / rebind.WasCancelled; service.CancelRebind() cancela.

Um jogo exportado restaura os remapeamentos do jogador ao iniciar a partir de inputbindings.json, na pasta de dados de aplicativo do usuário, sob o nome do produto do jogo; InputBindingStore.Save(service, InputBindingStore.DefaultPath(produto)) os grava.

No Studio

O Play Mode encaminha o teclado e o mouse para o jogo enquanto a visualização Game tem o foco: clique nela para jogar e pressione Esc para devolver o teclado ao Studio.


← Toda a documentação Editar esta página