dmx81 Temat założony przez niniejszego użytkownika |
allegro, kolizja (pewnie juz po raz kolejny) » 2009-12-11 16:04:29 jak w temacie, mam problem z kolizja, a raczej z ustaleniem zasady. Problem pojawia sie, kiedy przemieszczenie y1 dla obiekt1 jest wieksze niz y1--(ruch do gory, skok, w1=5), poniewaz dla y1++ mozna ustalic, ze jezeli
y1==y2+w2 - czyli dotyka obiektu2 od dolu - wtedy kolizja i blokada przemieszczania w gore
ale jesli porusza sie np y1-=50, a y2=40, w2=5 - wtedy przeskakuje mi poprostu przeszkode
jesli dam ograniczenie, ze kolizja, gdy y1<=y2+w2 (bo dla y1<y2+w2&&y1+w1>y2 nie dziala, przeskakuje, wiadomo, warunek po && niespelniony) to ok, pod warunkiem, ze nie znajduje sie kolejny obiekt3, ktory rowniez wchodzi w zasieg skoku obiekt1 - y3=30,w3=5
chce ograniczyc skok, ze jesli jest wiekszy niz odleglosc od y1 do nastepnego obiektu nad nim, do wlasnie tej wartosci czyli if(kolizja(obiekt1,obiekt2) to skok=y1-(y2+w2)
ale jesli wlasnie pare obiektow wchodzi w zasieg skoku, ze obiekt doskoczy ponad kilka obiektow, jak wybrac najnizszy obiekt, na ktorym obiekt1 powinien sie zatrzymac
a druga sprawa, bo moge chyba napisac funkcje, ktora ze wszystkich obiektow sprawdzi, ktory jest najblizej i znajduje sie ponad, ze wystapi kolizja, to co w przypadku, jesli obiekt najnizszy jest ruchomy, w momencie skoku nie powoduje kolizji, wiec ograniczenie zostanie przypisane dla obiektu wyzej, a w czasie skoku ruchomy obiekt spowoduje kolizje - obiekt1 go nie zauwazy raczej
troche zawile moze napisane, mam nadzieje, ze ktos zrozumial, ale jesli admin uzna, ze post zbyt zawily i wymaga edycji, to prosze o info, pozniewaz troche w glowie juz mi sie kreci :)
|
dmx81 Temat założony przez niniejszego użytkownika |
» 2009-12-11 16:35:15 to rozwiazanie rozumiem, ale problem nieco bardziej skomplikowany:
powiedzmy jest ludek na 2 pietrze budynku wykonujemy podskok,gdzie wartosc podskoku "przecina" kilka sufitow w gore,
trzeba rozwiazac problem, aby ludek zatrzymal sie na pierwszej napotkanej przeszkodzie - tak jak mowilem, nie ma problemu, kiedy ruch wystepuje plynnie, gdzie na biezaco mozna sprawdzac kolizje, tu od razu wystepuje kolizja z kilkoma obiektami - chyba trzeba bedzie napisac funkcje, ktora sprawdzi, ktory sufit jest najnizej :)
gorzej, jak bedzie to budynek 20 pietrowy :P rozumiem, ze raczej skok nie bedzie tak duzy, ale teoretycznie powinno byc zabezpieczenie przed przeskoczeniem pierwszej napotkanej przeszkody, wiec bede musial do funkcji dopisac jako argumenty wszytskie mozliwe obiekty/przeszkody? i sprawdzic ktora w danej chwili znajduje sie nad postacia i jest najblizej?
a moze jest prostsze rozwiazanie? ktorego wlasnie szukam... |