Dodawanie mechaniki skradania się w Unity
Mechanika skradania to systemy rozgrywki, które pozwalają graczom uniknąć wykrycia przez wrogów. Mechanika ta, powszechnie stosowana w grach opartych na skradance, takich jak *Assassin's Creed* lub *Hitman*, obejmuje takie funkcje, jak stożki widzenia, wykrywanie dźwięku, miejsca ukrycia i poziomy widoczności gracza. Dodanie mechaniki skradania może sprawić, że rozgrywka będzie bardziej angażująca, zachęcając do strategicznego myślenia i nagradzając ostrożne planowanie.
W tym samouczku stworzymy podstawowe mechanizmy skradania się w Unity. Gracz uniknie wykrycia przez wrogów, którzy mają stożki widzenia. Jeśli gracz wejdzie w stożek, zostanie wykryty.
Krok 1: Przygotowanie sceny
Zacznij od utworzenia prostej sceny Unity:
- Utwórz nowy projekt Unity.
- Dodaj Samolot, który będzie stanowił podłoże.
- Dodaj model 3D (np. kapsułę), aby przedstawić Gracza.
- Dodaj kolejny model 3D (np. Sześcian), aby przedstawić Wroga.
- Umieść gracza i wroga w różnych miejscach na płaszczyźnie.
Krok 2: Tworzenie stożka widzenia wroga
Będziemy symulować wizję wroga za pomocą stożkowego obszaru wyzwalającego:
- Kliknij prawym przyciskiem myszy w hierarchii i wybierz Utwórz > Obiekt 3D > Cylinder.
- Zmień rozmiar cylindra, aby wyglądał jak stożek, dostosowując jego skalę (np. X = 1, Y = 0,5, Z = 1).
- Obróć go tak, aby płaska podstawa była skierowana do przodu (np. Obrót X = 90).
- Dołącz go jako obiekt podrzędny obiektu gry Enemy GameObject.
- Ustaw Collider stożka jako Trigger.
- Dostosuj skalę i pozycję do pola widzenia wroga.
Krok 3: Pisanie skryptu wykrywania wroga
Teraz utwórzmy skrypt wykrywający Gracza w polu widzenia:
- Utwórz skrypt C# o nazwie EnemyVision.
- Dołącz skrypt do obiektu gry wroga.
- Użyj następującego kodu:
using UnityEngine;
public class EnemyVision : MonoBehaviour
{
public bool playerDetected = false;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = true;
Debug.Log("Player Detected!");
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = false;
Debug.Log("Player Lost!");
}
}
}
Ten skrypt sprawdza, czy Gracz wchodzi lub wychodzi z stożka widzenia. Upewnij się, że obiekt gry Player GameObject ma tag Player.
Krok 4: Dodawanie widoczności gracza
Następnie zaimplementujmy mechanikę widoczności, aby uczynić wykrywanie bardziej dynamicznym. Gracz będzie trudniejszy do wykrycia, gdy kuca lub się ukrywa:
- Utwórz nowy skrypt o nazwie PlayerVisibility.
- Dołącz go do obiektu gry Player GameObject.
- Użyj następującego kodu:
using UnityEngine;
public class PlayerVisibility : MonoBehaviour
{
public float visibility = 1.0f; // Full visibility
void Update()
{
// Reduce visibility when crouching (e.g., pressing "C")
if (Input.GetKey(KeyCode.C))
{
visibility = 0.5f;
Debug.Log("Crouching: Reduced visibility!");
}
else
{
visibility = 1.0f; // Default visibility
}
}
}
Ten skrypt dostosowuje poziom widoczności Gracza na podstawie jego działań. Wrogowie mogą później użyć tej wartości, aby zdecydować, jak łatwo Gracz zostanie wykryty.
Krok 5: Ulepszanie wykrywania wrogów
Teraz połączmy widoczność z wykrywaniem. Zmodyfikuj skrypt EnemyVision w następujący sposób:
using UnityEngine;
public class EnemyVision : MonoBehaviour
{
public bool playerDetected = false;
void OnTriggerStay(Collider other)
{
if (other.CompareTag("Player"))
{
PlayerVisibility playerVisibility = other.GetComponent<PlayerVisibility>();
if (playerVisibility != null && playerVisibility.visibility > 0.75f)
{
playerDetected = true;
Debug.Log("Player Detected with high visibility!");
}
else
{
Debug.Log("Player not visible enough to detect.");
}
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = false;
Debug.Log("Player Lost!");
}
}
}
Ten skrypt wykorzystuje poziom widoczności Gracza, aby określić, czy zostanie on wykryty.
Krok 6: Testowanie mechaniki skradania
Aby przetestować konfigurację:
- Naciśnij przycisk Odtwórz w Edytorze Unity.
- Przesuń gracza w pole widzenia wroga, aby uruchomić wykrywanie.
- Naciśnij przycisk kucania (np. "C"), aby zmniejszyć widoczność i sprawdzić, jak wpłynie to na wykrywanie.
Opcjonalne ulepszenia
Oto kilka pomysłów na rozszerzenie mechaniki skradania się:
- Wykrywanie dźwięku: Dodaj mechanikę, dzięki której przeciwnik wykrywa gracza na podstawie hałasu, jaki wydaje (np. podczas biegu).
- Kryjówki: Twórz kryjówki, w których gracz będzie niewidoczny.
- Patrolowanie wrogów: Zaprogramuj wrogów tak, aby patrolowali wyznaczoną ścieżkę, korzystając z systemu NavMesh Unity.
- Stany alertów: Dodaj poziomy alertów dla wrogów (np. podejrzany, przeszukujący, agresywny).
Wniosek
W Unity zaimplementowaliśmy podstawowe mechanizmy skradania się, w tym stożki widzenia i poziomy widoczności. Te systemy mogą służyć jako podstawa bardziej złożonej rozgrywki skradania się. Eksperymentuj z dodatkowymi funkcjami, aby stworzyć w pełni immersyjne doświadczenie skradania się w swojej grze.