Entrada
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.