Podsumowanie: zmiana systemu wejścia
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 47 z 56.
Wyzwanie
ŚredniTa różdżka do baniek została napisana z użyciem starej klasy Input. Działa w projekcie skonfigurowanym na Both, ale ten projekt jest skonfigurowany jak nowy projekt Unity 6 (Active Input Handling: Input System Package): naciśnij Play, a pierwsze wywołanie Input spowoduje wyjątek InvalidOperationException. Przepisz ją na Input System, zachowując wszystkie jej funkcje:
- Klawisze strzałek lub WASD przesuwają różdżkę po trawniku z prędkością
speedjednostek na sekundę, także po skosie bez zwiększania prędkości. - Naciśnięcie Jump tworzy bańkę 1.5 jednostki nad różdżką. Gdy Jump jest wciśnięty, bańka rośnie o
growRatena sekundę, aż osiągniemaxSize. Po puszczeniu klawisza rozmiar bańki zostaje wyświetlony w logu, na przykładBubble: 0.8. - Lewy przycisk myszy przebija wszystkie bańki i wyświetla ich liczbę w logu, na przykład
Popped 3.
Użyj akcji Move i Jump z projektu oraz Mouse.current. W skrypcie nie może pozostać żadne wywołanie Input.. Naciśnij Play i wypróbuj działanie, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class Wand : MonoBehaviour
{
public float speed = 4f;
public float growRate = 1f;
public float maxSize = 1.5f;
public GameObject bubblePrefab;
private Transform bubble;
void Update()
{
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
transform.position += move.normalized * speed * Time.deltaTime;
if (Input.GetButtonDown("Jump"))
{
bubble = Instantiate(bubblePrefab, transform.position + Vector3.up * 1.5f, Quaternion.identity).transform;
}
if (Input.GetButton("Jump") && bubble != null)
{
float size = Mathf.Min(bubble.localScale.x + growRate * Time.deltaTime, maxSize);
bubble.localScale = Vector3.one * size;
}
if (Input.GetButtonUp("Jump") && bubble != null)
{
Debug.Log("Bubble: " + bubble.localScale.x.ToString("F1"));
bubble = null;
}
if (Input.GetMouseButtonDown(0))
{
GameObject[] bubbles = GameObject.FindGameObjectsWithTag("Bubble");
foreach (GameObject b in bubbles) Destroy(b);
Debug.Log("Popped " + bubbles.Length);
}
}
}
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