Kolizje Unity3d

Odpowiedz Nowy wątek
2015-01-23 22:12
0

Witam serdecznie.

Robię grę 2D w unity ze sztuczną inteligencją. Mam pytanie odnosnie kolizji. Zaimplementowałem sobie taką klasę:

 public class Kolizje : MonoBehaviour {

    public void OnCollisionEnter2D(Collision2D coll)
    {
        if (coll.gameObject.tag == "Tree")
        {
            GUIConsole.ConsoleContext.Instance.LogText(string.Format ("Drzewo!"));
                }
    }
}

Mam pytanie czy da się wykryć kolizję zanim ona nastąpi i zastopować wszelkie działanie? Czyli np. użytkownik napisze w konsoli "idź na północ" i jak drzewo będzie na jego drodze to wykryje że drzewo stoi przed nim nie wchodząc w interakcje z nim i zakończy podróż na północ.

Będę bardzo wdzięczny za pomoc.

Pozostało 580 znaków

2015-02-11 08:17
xiv

Jeżeli nie chcesz aby obiekt player zatrzymał się w momencie zderzenia z drzewem, ale jakąś odległość przed drzewem to po prostu dodaj niewidoczny gameobject z colliderem jako podobiekt playera (będzie poruszał się razem z nim), ustaw go tak aby wystawał poza model playera na potrzebną odległość i tutaj warunek - gdy niewidzialny gameobject wykryje kolizje to zatrzymaj playera. Możesz też po prostu zmodyfikować rozmiar collidera na playerze, w zależności od zastosowania.

edytowany 3x, ostatnio: xiv, 2015-02-11 08:25

Pozostało 580 znaków

2015-02-12 18:18
0

Tak faktycznie. To dobre rozwiązanie.
Dziękuję bardzo.
Pozdrawiam serdecznie.

Pozostało 580 znaków

2015-02-19 00:20
0

Możesz też wykorzystać rzucanie promienia (RayCasting), gdzie odległość wykrywania kolizji możesz określić dokładnym dystansem.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0