Kolizje Unity3d

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.

1

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.

0

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

0

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

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