Pressionado, Mantido, Solto
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 19 de 85.
O Unity pode informar três coisas diferentes sobre uma tecla, e cada uma é consultada em Update():
Input.GetKeyDown(KeyCode.Space): a tecla Space foi pressionada neste quadro? O resultado é verdadeiro em um único quadro por pressionamento.Input.GetKey(KeyCode.Space): a tecla Space está pressionada agora? O resultado é verdadeiro em todos os quadros enquanto Space estiver pressionada.Input.GetKeyUp(KeyCode.Space): a tecla Space foi solta neste quadro? O resultado é verdadeiro em um único quadro, quando a tecla é solta.
Mantenha Space pressionada por meio segundo a 60 quadros por segundo, e GetKey será verdadeiro em 30 quadros, GetKeyDown no primeiro deles e GetKeyUp no quadro seguinte ao último. Um canhão que dispara uma vez por pressionamento consulta GetKeyDown; com GetKey, um pressionamento dispararia 30 tiros:
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp serve para o que acontece quando o jogador solta a tecla, como o fim de uma corrida. Os três respondem apenas para o quadro atual, por isso devem ser usados em Update(): ele é executado em todos os quadros, enquanto Start() é executado uma vez e deixaria passar quase todos os pressionamentos.
Desafio
FácilA funda acumula carga enquanto a barra de espaço estiver pressionada e informa o disparo ao soltá-la.
- Em
Update(), enquantoInput.GetKey(KeyCode.Space)for verdadeiro, adicioneTime.deltaTimeacharge. - Ao chamar
Input.GetKeyUp(KeyCode.Space), registre"Charge: " + chargee, em seguida, definachargecomo 0.
Pressione “Jogar”, mantenha a barra de espaço pressionada e solte-a: o Console exibirá uma linha como Charge: 1.5. Em seguida, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Enquanto Space estiver pressionada: charge aumenta em 1 a cada segundo.
// Quando Space for solta: registre charge no log e depois redefina-a para 0.
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity