Menu
CoddyTech

Podsumowanie: klawisz interakcji

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 9 z 50.

challenge icon

Wyzwanie

Łatwy

Przypisz graczowi klawisz interakcji. Strzałki poruszają graczem (Mover.cs, gotowe), a spacja pozwala użyć najbliższego obiektu w zasięgu, z którego można skorzystać. Napisz następujące elementy:

  • IInteractable: interfejs z jedną metodą void Interact().
  • Door: każde użycie otwiera lub zamyka drzwi. Otwarcie obraca je o 90 stopni wokół osi y i zapisuje w logu Door opened; zamknięcie obraca je z powrotem i zapisuje w logu Door closed.
  • Chest: pierwsze użycie zapisuje w logu Found 5 coins (jego coins, ustawiane w Inspectorze) i opróżnia skrzynię. Każde kolejne użycie zapisuje w logu The chest is empty.
  • Lever: każde użycie włącza lub wyłącza bridge (obiekt GameObject ustawiany w Inspectorze, ukryty na początku) i zapisuje w logu Lever pulled.
  • Interactor, na graczu: po naciśnięciu spacji (odczytaj ją za pomocą Keyboard.current z Input System) znajdź collidery w zasięgu reach (1.5) za pomocą Physics.OverlapSphere i wywołaj Interact() na tym, który ma IInteractable i którego pozycja znajduje się najbliżej gracza. Jeśli w zasięgu niczego nie ma, nic się nie dzieje.

Naciśnij Play, pochodź i użyj wszystkiego, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;
using UnityEngine.InputSystem;

// Space używa najbliższego obiektu w zasięgu.
public class Interactor : MonoBehaviour
{
    public float reach = 1.5f;
}

Wszystkie lekcje w sekcji Architektura gier w Unity