Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Uruchom sprintera spacją: w dół, aby przykucnąć, w górę, aby biec.

  1. W Update(), gdy !running i Keyboard.current.spaceKey.wasPressedThisFrame: ustaw set, przesuń w dół o crouch, wyświetl w konsoli Set.
  2. Gdy set i wasReleasedThisFrame: wyzeruj set, ustaw running, przesuń w górę o crouch, wyświetl w konsoli Go!.
  3. Gdy running, poruszaj się wzdłuż osi +z z prędkością speed jednostek 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

Poćwicz samodzielnie: Edytor online Unity