Wciśnięte w tej klatce
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 46 z 60.
isPressed odpowiada na pytanie „czy przycisk jest teraz wciśnięty?” w każdej klatce, gdy go przytrzymujesz. Jeśli coś ma się wydarzyć tylko raz po naciśnięciu, element sterujący udostępnia 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 opada po naciśnięciu przycisku myszy i unosi się 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 raz zapisuje w logu Stamp 1, raz opuszcza pieczątkę i raz ją podnosi. Gdyby w pierwszym if użyć isPressed, to samo kliknięcie zapisałoby w logu około 30 pieczątek i wbiło pieczątkę na głębokość 15 jednostek w biurko. Klawisze działają tak samo: Keyboard.current.spaceKey.wasPressedThisFrame ma wartość true raz po każdym naciśnięciu spacji.
Wyzwanie
ŚredniUruchom sprintera spacją: w dół, aby przykucnąć, w górę, aby biec.
- W
Update(), gdy!runningiKeyboard.current.spaceKey.wasPressedThisFrame: ustawset, przesuń w dół ocrouch, wyświetl w konsoliSet. - Gdy
setiwasReleasedThisFrame: wyzerujset, ustawrunning, przesuń w górę ocrouch, wyświetl w konsoliGo!. - Gdy
running, poruszaj się wzdłuż osi +z z prędkościąspeedjednostek na sekundę.
Naciśnij „Graj”, przytrzymaj spację i puść ją: w konsoli pojawi się Set, a następnie Go! Potem naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
private bool set;
private bool running;
void Update()
{
// Naciśnięcie Space: kucnij i wypisz Set. Zwolnienie Space: wstań, wypisz Go! i biegnij.
}
}
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz2Przyciski 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ściaPoćwicz samodzielnie: Edytor online Unity