[Allegro] Kolizja cd.
Ostatnio zmodyfikowano 2012-01-07 10:53
| Aclber Temat założony przez niniejszego użytkownika | [Allegro] Kolizja cd. » 2012-01-05 15:24:40 Witam.Mam problem z kolizją.
 Jeśli mam ustawiony ruch gracza na 32 px to kolizja występuje tylko ruch jest trochę "kwadratowy", gdy zmniejszę FPS (timer = al_create_timer(1 / FPS); ). Muszę zmienić bo na poziomie 1/60 FPS gracz bardzo szybko chodzi.
 Jednak chciałbym mieć ruch gracza o 1 px ale znowu kolizja nie występuj,próbowałem kilka zmieniać wartości do kolizji i niestety mi jakoś nie wychodzi.
 
 
 Ma ktoś jakiś pomysł ?
 | 
|  | 
| Winner | » 2012-01-05 17:22:08 Taki sam problem ja ja masz :) Ja go wczoraj rozwiązałem, musisz używać funkcji getpixel. | 
|  | 
| SeaMonster131 | » 2012-01-05 22:03:50 | musisz używać funkcji getpixel | 
 A co jeśli masz 5 milionów kolorów? A robienie pętli for nie będzie zbyt wydajne. Kolizje na początku jest trudno zrobić. Ale trzeba przy tym porządnie przysiąść, logicznie myśleć, mieć cierpliwość, aż w końcu się uda. Każde następne zrobienie kolizji będzie łatwiejsze.  Nie do końca wiem, o co Tobie chodzi tutaj akurat, ale zarzuce kolizją z mojej tam innej gry: Player.ymap = int(( cameraY ) / 200 + 2 ); Player.xmap = int(( cameraX ) / 200 + 2.2 );
 
 if( map[ Player.ymap ][ Player.xmap ] == 1 )
 cout << "Gracz znajduje sie na kafelku 1";
 
 
200 to szerokość i wysokość kafelka (czyli u Ciebie chyba 32), a te 2 oraz 2.2 to ilość kafelków od brzegu ekranu. Gracz znajduje się na środku ekranu, dlatego u mnie trzeba dodać te kafelki :) | 
|  | 
| Aclber Temat założony przez niniejszego użytkownika | » 2012-01-06 21:19:33 Niestety dalej nie działa mi ta kolizja.Muszę mieć ruch na 1 px bo wtedy wygląda płynnie.
 Ma ktoś może jakiś pomysł jak to poprawić ?
 
 | 
|  | 
| hincu | » 2012-01-06 21:35:48 trzymaj moja funkcje pisana pod sfml ale to nie powinno tobie w niczym przeszkadzac : P bool Collision( Character & TestCharacter, Object & TestObj ){
 if(
 (( TestCharacter.CharacterGFX.GetPosition().x >= TestObj.ObjectGFX.GetPosition().x && TestCharacter.CharacterGFX.GetPosition().x < TestObj.ObjectGFX.GetPosition().x + TestObj.GFX.GetWidth() ) ||( TestObj.ObjectGFX.GetPosition().x >= TestCharacter.CharacterGFX.GetPosition().x && TestObj.ObjectGFX.GetPosition().x < TestCharacter.CharacterGFX.GetPosition().x + TestCharacter.GFX.GetWidth() ) )
 &&
 (( TestCharacter.CharacterGFX.GetPosition().y >= TestObj.ObjectGFX.GetPosition().y && TestCharacter.CharacterGFX.GetPosition().y < TestObj.ObjectGFX.GetPosition().y + TestObj.GFX.GetHeight() ) ||( TestObj.ObjectGFX.GetPosition().y >= TestCharacter.CharacterGFX.GetPosition().y && TestObj.ObjectGFX.GetPosition().y < TestCharacter.CharacterGFX.GetPosition().y + TestCharacter.GFX.GetHeight() ) )
 ) return true;
 
 return false;
 }
 
 | 
|  | 
| akwes | » 2012-01-06 21:59:40 @hincu
 ale to nie jest per pixel, chyba że nie chodzi autorowi o tak dokładną kolizję :P ?
 | 
|  | 
| hincu | » 2012-01-06 22:13:40 z tego co ja rozumiem to chce miec poruszanie postacia o 1px wiec kolizja per pixel nie musi takowa byc : P niech najpierw zobaczy jak dziala podstawowa kolizja aabb i wtedy moze cos mu wejdzie do glowy : Pno i kup sobie jakis slownik j polskiego, jakos nikt nie moze zrozumiec twojego problemu w tym ja : P
 | 
|  | 
| Aclber Temat założony przez niniejszego użytkownika | » 2012-01-07 08:59:11 Słownik języka polskiego polecam Tobie, ponieważ nie zauważyłem abyś pisał poprawnie po polsku. Temat był o allegro, więc bezsensowne wklejanie kodu z sfml nic nie wniosło pożytecznego do tego tematu.
 | 
|  | 
| « 1 »  2 |