Menu
CoddyTech

Botões Nomeados

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 21 de 85.

Além das teclas, o Unity tem botões: nomes listados no Input Manager (Edit, Project Settings, Input Manager), cada um associado a uma ou mais teclas. Input.GetButtonDown("Fire1") verifica o nome, não uma tecla. Um projeto novo tem estes:

  • "Jump": Espaço
  • "Fire1": Ctrl esquerdo ou botão esquerdo do mouse
  • "Fire2": Alt esquerdo ou botão direito do mouse
  • "Submit" e "Cancel": Enter e Escape

Os botões do gamepad estão associados aos mesmos nomes, e as teclas podem ser alteradas no Input Manager sem mexer no código. GetButton, GetButtonDown e GetButtonUp funcionam como GetKey, GetKeyDown e GetKeyUp. Este blaster registra um disparo a cada pressionamento de Ctrl ou clique:

void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        Debug.Log("Shot!");
    }
}

O nome é uma string, então um nome escrito incorretamente ainda compila. O Unity o procura quando a linha é executada e, quando nenhum botão tem esse nome, lança uma exceção a cada quadro: ArgumentException: Input Button Fier1 is not setup. Quando vir essa mensagem, compare o nome no seu código com a lista do Input Manager.

challenge icon

Desafio

Fácil

Corrija o salto do sapo e faça com que ele pouse novamente.

  1. Pressione “Jogar”: o Console mostra um erro sobre o botão "Jumpp". Altere para "Jump".
  2. Adicione um segundo if em Input.GetButtonUp("Jump") que subtraia new Vector3(0, hop, 0) de transform.position.

Pressione “Jogar”, mantenha a tecla Espaço pressionada e solte-a: o sapo salta para cima e depois pousa. Em seguida, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Hopper : MonoBehaviour
{
    public float hop = 1.5f;

    void Update()
    {
        if (Input.GetButtonDown("Jumpp"))
        {
            transform.position += new Vector3(0, hop, 0);
        }
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity