Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Sprinter 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 crouch jednostek i zostaje wyświetlony komunikat Set.
  • Gdy potem klawisz spacji zostanie zwolniony, biegacz ponownie wstaje (o crouch jednostek w górę), zostaje wyświetlony komunikat Go! i rozpoczyna się bieg: od tej chwili biegnie wzdłuż osi +z z prędkością speed jednostek na sekundę.
  • Przytrzymanie klawisza spacji wyświetla komunikat Set tylko 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.
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier