Menu
CoddyTech

Rückblick: Eingabewechsel

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 48 von 60.

In diesem Kapitel hast du die Tastatur, die Maus und die Aktionen des Projekts mit dem Input System ausgelesen. Der Seifenblasenstab verwendet weiterhin die alte Klasse Input: Stelle ihn Aufruf für Aufruf um.

challenge icon

Aufgabe

Mittel

Übertrage den Zauberstab auf das Input System; die alte Klasse Input verursacht hier einen Fehler.

  1. Füge using UnityEngine.InputSystem; und InputAction-Felder moveAction und jumpAction hinzu und weise ihnen in Start() mithilfe von InputSystem.actions.FindAction Werte zu.
  2. Bewege dich mit moveAction.ReadValue<Vector2>(), wobei dessen y-Wert entlang der z-Achse verläuft.
  3. Ersetze die Jump-Prüfungen durch WasPressedThisFrame(), IsPressed() und WasReleasedThisFrame() und den Klick durch Mouse.current.leftButton.wasPressedThisFrame.

Drücke „Spielen“, blase eine Blase auf und lasse sie platzen. Drücke dann „Prüfen“.

Probier es selbst

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);
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Echte Spiele entwickeln

Übe selbstständig: Unity-Playground