Untitled

 avatar
unknown
csharp
a month ago
2.6 kB
4
Indexable
// Dodaj tę zmienną do listy zmiennych klasy
public List<BoxCollider> nearHintColliders = new List<BoxCollider>();

// Zastąp dotychczasową metodę IsInNearZone() tą wersją
bool IsInNearZone()
{
    // Najpierw sprawdź oryginalne collider'y dla zachowania wstecznej kompatybilności
    if(PointInOABB(PlayerController.instance.GetPlayerPosition(), nearShowHintCollider))
    {
        return true;
    }
    if(nearShowHintCollider2 != null)
    {
        if (PointInOABB(PlayerController.instance.GetPlayerPosition(), nearShowHintCollider2))
        {
            return true;
        }
    }
    
    // Następnie sprawdź wszystkie collider'y z listy
    foreach(BoxCollider collider in nearHintColliders)
    {
        if(collider != null && PointInOABB(PlayerController.instance.GetPlayerPosition(), collider))
        {
            return true;
        }
    }
    
    return false;
}

// Dodaj tę metodę do klasy - będzie wywoływana podczas inicjalizacji
private void InitializeNearHintColliders()
{
    // Wyczyść listę na wypadek ponownej inicjalizacji
    nearHintColliders.Clear();
    
    // Dodaj istniejące collider'y dla zachowania wstecznej kompatybilności
    if(nearShowHintCollider != null && !nearHintColliders.Contains(nearShowHintCollider))
    {
        nearHintColliders.Add(nearShowHintCollider);
    }
    
    if(nearShowHintCollider2 != null && !nearHintColliders.Contains(nearShowHintCollider2))
    {
        nearHintColliders.Add(nearShowHintCollider2);
    }
    
    // Znajdź wszystkie dodatkowe BoxCollider'y w obiekcie i jego dzieciach
    Transform hintZoneTransform = transform.Find("Near hints zone");
    if(hintZoneTransform != null)
    {
        // Pobierz wszystkie BoxCollider'y z obiektu "Near hints zone" i jego dzieci
        BoxCollider[] additionalColliders = hintZoneTransform.GetComponentsInChildren<BoxCollider>(true);
        foreach(BoxCollider collider in additionalColliders)
        {
            // Dodaj tylko jeśli nie jest to jeden z głównych colliderów
            if(collider != nearShowHintCollider && collider != nearShowHintCollider2 && !nearHintColliders.Contains(collider))
            {
                nearHintColliders.Add(collider);
            }
        }
    }
}

// Dodaj wywołanie metody InitializeNearHintColliders() w metodzie Awake()
// Umieść to na końcu metody Awake(), tuż przed jej zamknięciem
void Awake()
{
    // Istniejący kod Awake() pozostaje bez zmian
    
    // Dodaj to wywołanie na końcu metody:
    InitializeNearHintColliders();
}
Editor is loading...
Leave a Comment