Evermind Temat założony przez niniejszego użytkownika |
[Allegro] Podczas skakania postac jest za szybka. » 2013-12-25 12:14:02 Siemka. Ogladam aktualnie tutorial coddingmadeeasy na temat platformowek w Allegro4. Jestem po 11 filmiku. Pisze u siebie to samo co autor, zeby to zrozumiec na swoj sposob ;p. Ogolnie wszystko jest okej - kolizje w porzadku, postac skacze, ale no wlasnie. Gdy chodze nia w prawo, lewo to predkosc chodzenia jest nromalna("moje oko" wszystko widzi), ale gry nia podskocze, to dzieje sie to bardzo szybko: 1. Postac jest na ziemi. 2. Nie mija ulamek sekundy, postac jest w punkcie "granicznym" skoku. 3. Postac jest znowu na ziemii.
Ogolnie jakos zaznajomiony nie jestem z allegro, wiec prosze nie krzyczec jesli robie cos glupiego. Uwazam jednak, ze nie jest to zwiazane z moim kodem, ale jednak z komputerem(dwa rdzenie czy cos w tym stylu). Jezeli trzeba bedzie to moge wrzucic kod, ktory jednak wg. mnie jest identyczny jak autora na yt ;P
Pozdrawiam
|
|
MrPoxipol |
» 2013-12-25 12:37:18 Prędzej z kodem. Pokaż kod :) |
|
Evermind Temat założony przez niniejszego użytkownika |
» 2013-12-25 12:48:09 Ok. To main int main() { allegro_init(); install_keyboard(); install_mouse(); install_timer(); install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "A" ); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, ScreenWidth, ScreenHeight, 0, 0 ); set_window_title( "Wilq" ); LOCK_VARIABLE( counter ); LOCK_FUNCTION( Increment ); install_int_ex( Increment, BPS_TO_TIMER( 100 ) ); BITMAP * Buffer = create_bitmap( 6000, 600 ); Player player; Camera camera; Map map; Collision collision; player.Init(); camera.Init(); map.Init(); collision.Init(); bool done = false; while( !done ) { while( counter > 0 ) { if( key[ KEY_ESC ] ) done = true; map.Update(); player.Update(); collision.Update( Buffer, player ); camera.Update( player.x, player.y ); counter--; } map.Draw( Buffer ); player.Draw( Buffer ); camera.Draw( Buffer ); clear_bitmap( Buffer ); } return 0; } END_OF_MAIN()
Tutaj player.cpp nie caly. hDir to jest poziomy kierunek(jest ustawiony na 0), vDir to pionowy(ma wartosc 2 gdy jest na ziemii, przy 1 jest w powietrzu) void Player::Controls() { if( key[ KEY_LEFT ] ) { velx =- speed; hDir = 2; } else if( key[ KEY_RIGHT ] ) { velx = speed; hDir = 1; } else { velx = 0; hDir = 0; } if( key[ KEY_UP ] && jump == true ) { vely = jumpspeed; platform = false; jump = false; vDir = 1; } }
void Player::SetPosition() { if( vely >= 0 ) { vDir = 2; } if( platform == false ) { vely += gravity; } else { vely = 0; } x += velx; y += vely; x2 += x + width; y2 += y + height; }
|
|
Evermind Temat założony przez niniejszego użytkownika |
» 2013-12-25 17:50:37 |
|
Evermind Temat założony przez niniejszego użytkownika |
» 2013-12-26 03:03:36 Sorry, ze tak pisze posty pod soba, ale zalezy mi zeby ktos sprobowal chociaz mi pomoc :D
Przez przypadek podczas kolejnego siedzenia i wpatrywania sie w kod, "odkrylem, ze gdy staje na skraju 'mapy'(bo na razie jest ona krotka) i wykonujac skok za krawedz mapy, wszystko wyglada normalnie - jedynie skaczac na mapie nie wykonuje sie to poprawnie - jakis pomysl? |
|
pekfos |
» 2013-12-26 14:22:44 wykonujac skok za krawedz mapy, wszystko wyglada normalnie |
Odpowiedz sobie na pytanie: Co to zmienia? Wtedy pewnie znajdziesz błąd. Strzelam, że to coś z wywołaniami Player::SetPosition() i/lub zmienną platform. |
|
Evermind Temat założony przez niniejszego użytkownika |
» 2013-12-26 22:19:26 Ok popatrze. Mam jednak pytanie ktore mnie nurtuje troche. W player.cpp mam metode 'init' ktora ma takie zmienne: width = 10; height = 10; x =( ScreenWidth - width ) / 2; y =( ScreenHeight - height ) / 2; x2 = x + width; y2 = y + height;
W metodzie 'draw' mam cos takiego: rectfill( Buffer, x, y, x + 10, y + 10, makecol( 255, 0, 0 ) );
i w tym przypadku wszystko jest okej - rysuje sie kwadracik 10 na 10. Jednak gdy zmienie kod na: rectfill( Buffer, x, y, x2, y2, makecol( 255, 0, 0 ) );
Otrzymuje mniej wiecej taki efekt: http://i42.tinypic.com/2d9gcy.jpgA wydaje mi sie, ze to co mam w 'init' powinno spowodac, ze zostanie narysowane to samo chyba, ze jestem nie ogarniety jakos? |
|
pekfos |
» 2013-12-26 22:21:03 x2 += x + width; y2 += y + height;
|
|
|
« 1 » 2 |