Wciśnięte w tej klatce
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 45 z 56.
isPressed odpowiada na pytanie „czy przycisk jest teraz wciśnięty?” w każdej klatce przytrzymania. Jeśli coś powinno wydarzyć się raz na naciśnięcie, kontrolka ma jeszcze dwie odpowiedzi: wasPressedThisFrame ma wartość true tylko w klatce, w której klawisz lub przycisk został wciśnięty, a wasReleasedThisFrame — tylko w klatce, w której został zwolniony. Zastępują one Input.GetKeyDown i Input.GetKeyUp, a także GetMouseButtonDown i GetMouseButtonUp. Ta pieczątka opuszcza się po naciśnięciu przycisku myszy i unosi po jego zwolnieniu:
using UnityEngine;
using UnityEngine.InputSystem;
public class Stamp : MonoBehaviour
{
public float drop = 0.5f;
private int stamps;
void Update()
{
Mouse mouse = Mouse.current;
if (mouse.leftButton.wasPressedThisFrame)
{
transform.position += Vector3.down * drop;
stamps++;
Debug.Log("Stamp " + stamps);
}
if (mouse.leftButton.wasReleasedThisFrame)
{
transform.position += Vector3.up * drop;
}
}
}Kliknięcie przytrzymane przez pół sekundy wyświetla w logu Stamp 1 raz, opuszcza pieczątkę raz i raz ją podnosi. Gdyby w pierwszym if użyć isPressed, to samo kliknięcie wyświetliłoby w logu około 30 pieczątek, a pieczątka zagłębiłaby się w biurko na 15 jednostek. Klawisze działają tak samo: Keyboard.current.spaceKey.wasPressedThisFrame ma wartość true raz przy każdym naciśnięciu klawisza spacji.
Wyzwanie
ŚredniSprinter czeka w blokach startowych. Jego skrypt ma speed (6) i crouch (0.3).
- Gdy klawisz spacji zostanie wciśnięty, biegacz kuca w blokach: przesuwa się w dół o
crouchjednostek i zostaje wyświetlony komunikatSet. - Gdy potem klawisz spacji zostanie zwolniony, biegacz ponownie wstaje (o
crouchjednostek w górę), zostaje wyświetlony komunikatGo!i rozpoczyna się bieg: od tej chwili biegnie wzdłuż osi +z z prędkościąspeedjednostek na sekundę. - Przytrzymanie klawisza spacji wyświetla komunikat
Settylko raz, a nie raz na klatkę. Gdy biegacz już biegnie, klawisz spacji nie robi nic więcej.
Odczytaj klawisz spacji za pomocą Keyboard.current. Kliknij Play, przytrzymaj klawisz spacji i zwolnij go, a następnie kliknij Check.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
void Update()
{
// Wciśnięcie Space: kucnij i wypisz Set. Zwolnienie Space: wstań, wypisz Go! i biegnij.
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w banku3Menedżer gry
Jeden skrypt obsługuje gręSingletonStany gryInstrukcja switch dla stanuPowtórka: menedżer rund6Projekt: Niekończący się bieg
Trzy toryPrzeszkody przed tobą9Nowy system wejścia
Dwa systemy wejściaKlawiatura i myszWciśnięte w tej klatceAkcje wejściaPodsumowanie: zmiana systemu wejścia