Menu
CoddyTech

Naciśnięty, przytrzymany, zwolniony

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 19 z 85.

Unity może przekazać Ci trzy różne informacje o klawiszu, a o każdą z nich pytasz w Update():

  • Input.GetKeyDown(KeyCode.Space): czy w tej klatce naciśnięto spację? Wartość jest prawdziwa w jednej klatce przy każdym naciśnięciu.
  • Input.GetKey(KeyCode.Space): czy spacja jest teraz wciśnięta? Wartość jest prawdziwa w każdej klatce, gdy spacja jest wciśnięta.
  • Input.GetKeyUp(KeyCode.Space): czy w tej klatce zwolniono spację? Wartość jest prawdziwa w jednej klatce, gdy klawisz zostanie zwolniony.

Przytrzymaj spację przez pół sekundy przy 60 klatkach na sekundę, a GetKey będzie miało wartość true w 30 klatkach, GetKeyDown w pierwszej z nich, a GetKeyUp w klatce po ostatniej. Armata, która strzela raz przy każdym naciśnięciu, sprawdza GetKeyDown; przy użyciu GetKey jedno naciśnięcie wystrzeliłoby 30 pocisków:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp służy do obsługi tego, co się dzieje, gdy gracz puszcza klawisz, na przykład kończącego się sprintu. Wszystkie trzy sprawdzają tylko bieżącą klatkę, dlatego należy używać ich w Update(): ta metoda uruchamia się w każdej klatce, podczas gdy Start() uruchamia się raz i przeoczyłaby niemal każde naciśnięcie.

challenge icon

Wyzwanie

Łatwy

Proca się ładuje, gdy przytrzymujesz klawisz spacji, i wyświetla wynik strzału po jego zwolnieniu.

  1. W Update(), gdy Input.GetKey(KeyCode.Space) ma wartość true, dodaj Time.deltaTime do charge.
  2. Po Input.GetKeyUp(KeyCode.Space) wyświetl w logu "Charge: " + charge, a następnie ustaw charge na 0.

Naciśnij „Graj”, przytrzymaj spację i puść ją: w konsoli pojawi się wiersz podobny do Charge: 1.5. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Gdy Space jest przytrzymany: charge rośnie o 1 co sekundę.
        // Gdy Space zostanie zwolniony: wypisz wartość charge w logu, a następnie ustaw ją z powrotem na 0.
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity