Strona 1 z 1

Zwracanie obiektu na danej pozycji

PostWysłany: 24 Sty 2019, 15:52
przez jarkozpl
Witam,
Jak wykryć konkretny obiekt na danej pozycji?
Konkretnie mam obiekt biom1 i biomgenerator i chodzi o to żeby obiekt biomgenerator wiedział czy na jego pozycji i np. transform.position.x +5 jest już obiekt biom1.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 24 Sty 2019, 16:56
przez Ether_141
No to normalnie sprawdzasz pozycje tego obiektu ifem, ale podejrzewam, że można i nawet trzeba zrobić to lepiej, a nie sprawdzać te pozycje w taki sposób.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 24 Sty 2019, 20:41
przez jarkozpl
Nie rozumiem, w jaki sposób mam to sprawdzić ifem? Nie znam wielu funkcji c#. Wcześniej kodowałem tylko w gml a tam była funkcja instsnte_place(x, y), zwracają obiekt na określonych pozycjach,tutaj nie znalazłem takiego odpowiednika.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 25 Sty 2019, 10:02
przez Hostur
Albo trzymasz referencję do transforma tych obiektów i wywołujesz z jakąś częstotliwością Vector2.distance lub Vector3 distance do tych obiektów z poziomu biomgeneratora. Czyli przy generacji dodajesz taki obiekt do jakiejś listy aby móc po niej iterować. W zależności od szybkości przemieszczania się i dokładności jaką chcesz osiągnąć możesz to zrobić w funkcji update, fixedupdate, invokerepeating lub użyć coroutine.

Możesz też postawić box collidera i sprawdzać OnTriggerEnter

Możesz też puszczać sphearraycast co jakiś czas i sprawdzać co złapałeś na triggera

Użyj tych słów kluczowych w google i powinno się rozjaśnić, jak nie dasz rady to wróć z jakimś rozwiązaniem i zobaczymy co jest do poprawy

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 25 Sty 2019, 16:15
przez jarkozpl
colliders nie działają bo obiekt nie porusza się tylko jakby teleportuje co 5f a długości nie chce mi zwracać bo tu nie ma funkcji zwracającej najbliższy obiekt i zawsze zwraca mi odległość od pierwszego obiektu ale to i tak by nie rozwiązało problemu bo obiekt biom generator tworzy wokół siebie 9 obiektów ale chcę żeby nie mógł postawić choćby 1 jeżeli w jakimś miejscu w którym miałby postawić ten 1 z 9 obiektów coś było.

Ja zwyczajnie muszę mieć funkcję która będzie mi zwracać obiekt w konkretnym miejscu ale nie na zasadzie że czy dany obiekt jest w tym miejscu tylko czy w tym miejscu jest jakiś obiekt i nie mogę użyć do tego collider bo on nie działa jeżeli obiekty się nie poruszają.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 25 Sty 2019, 22:24
przez Palanthir
Colider nie działa jeśli obiekty się nie poruszają ? Sprawdzenie czy obiekty są na danej pozycji nie odzwierciedli tego, czy w danym miejscu są jakieś obiekty ?

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 29 Sty 2019, 07:59
przez Hostur
Ja też niczego nie zrozumiałem.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 02 Lut 2019, 10:35
przez patrykas1000
https://docs.unity3d.com/ScriptReference/Physics.html
https://docs.unity3d.com/ScriptReferenc ... phere.html
https://docs.unity3d.com/ScriptReferenc ... phere.html

Dokumentacja nie boli. Pamiętaj by wszystkie obiekty które można wykryć miały collider
OnTrigger/OnCollision nie będzie działać bo przynajmniej jeden z obiektów musi mieć rigidbody ale można dać rigidbody na collider który będzie sprawdzać.

Re: Zwracanie obiektu na danej pozycji

PostWysłany: 02 Lut 2019, 11:21
przez Palanthir
Geometry queris nie potrzebują rigidbody do wykrycia triggera i chyba są lepszym rozwiązaniem niż obiekty z colliderami.