Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Kolizja cd.

Ostatnio zmodyfikowano 2012-01-07 10:53
Autor Wiadomość
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ł ?
P-47299
Winner
» 2012-01-05 17:22:08
Taki sam problem ja ja masz :) Ja go wczoraj rozwiązałem, musisz używać funkcji getpixel.
P-47306
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:
C/C++
Player.ymap = int(( cameraY ) / 200 + 2 ); // y playera na mapie
Player.xmap = int(( cameraX ) / 200 + 2.2 ); // x -\\-

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 :)
P-47343
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ć ?
P-47441
hincu
» 2012-01-06 21:35:48
trzymaj moja funkcje pisana pod sfml ale to nie powinno tobie w niczym przeszkadzac : P
C/C++
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;
}
P-47443
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 ?
P-47444
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 : P
no i kup sobie jakis slownik j polskiego, jakos nikt nie moze zrozumiec twojego problemu w tym ja : P
P-47445
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.
P-47449
« 1 » 2
  Strona 1 z 2 Następna strona