Wykrywanie kolizji i blokowanie zmiany położenia, obiekt się nie zatrzymuje.

0

Witam, bawie się unity i napotkałem problem. Mam obiekt który opada na platformę i w locie można nim sterować po osi X lecz w sytuacji jak kolizja zostanie wykryta ma się nie poruszać w tej osi. Kod działa i się kompiluje, obiekt opada i mozna nim nadal poruszać ale jak się wciśnie myszką w ekran gry to wtedy nie można nim już sterować. A oto kod:

 
	void OnCollisionEnter(Collision collisionInfo){
		GetComponent<Rigidbody> ().constraints = RigidbodyConstraints.FreezeRotationX | 
									  RigidbodyConstraints.FreezeRotationY | 
									  RigidbodyConstraints.FreezeRotationZ | 
									  RigidbodyConstraints.FreezePositionX | 
									  RigidbodyConstraints.FreezePositionZ;
	}
0

mozliwe ze jest gdzies blad w Unity.

Najlepiej zrob
State-Pattern-Machine
Jezeli state jest FreezeX to wywolujesz inna metode do poruszania sie graczem (tutaj fajnie mozna wykorzystac wzorzec Strategia)

0

Nie do końca rozumiem co mam zrobić. Mam po zablokowaniu możliwości ruchu w osi x wywołać jakąś funkcje która ma za zadanie zmienić pozycje obiektu?

Przed uruchomieniem gry zablokowałem oś x ręcznie a obiektem nadal można sterować xD Dopiero jak się wciśnie kursorem na scene to się blokuje... dziwne xD</del>

Problem solved. W skrócie chodzi o to że freez działa tylko na siły, źle poruszałem obiektem.

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