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

[Allegro] Podskok + mapa kafelkowa

Ostatnio zmodyfikowano 2012-11-13 23:08
Autor Wiadomość
wiktor16s
Temat założony przez niniejszego użytkownika
[Allegro] Podskok + mapa kafelkowa
» 2012-11-13 16:17:46
Echhh. W życiu są czasem takie momenty, że trzeba zrobić coś, co jest beznadziejne, ale niezbędne albo bardzo potrzebne.
Tak jest ze skokiem. Wiem że ten temat był wałkowany setki razy znajdowałem MNÓSTWO kodów, ale żaden ze znalezionych nie działał z mapą kafelkową. Chodzi mi o pomoc ze zrobieniem skoku.  Chciałbym:

1 odczytać pozycje y ludka i zapisać jako
poczatkowa_pozycja_ludka
2 od
poczatkowa_pozycja_ludka - 30
3 ludek się WZNOSI i po osiągnięciu 30 pixeli wraca do
poczatkowa_pozycja_ludka
 
Próbowałem wieloma sposobami, jednak nic nie działało ;/
P-69117
bingo009
» 2012-11-13 16:31:04
Można w ten sposób:
C/C++
bool skok = false;
int poczatkowa_pozycja_ludka;

//petla glowna
if( klawisz == space && !skok )
{
    poczatkowa_pozycja_ludka = pozycja_ludka;
    skok = true;
}

//Gdzies na koncu za wszystkim
if( skok && pozycja_ludka > poczatkowa_pozycja_ludka - 30 ) pozycja_ludka--;

if( skok && pozycja_ludka != poczatkowa_pozycja_ludka ) pozycja_ludka++;

if( skok && pozycja_ludka == poczatkowa_pozycja_ludka ) skok = false;


Jest to bardzo uproszczone, napewno można lepiej(np. dodać trochę fizyki, że jak skoczy to leci coraz wolniej, aż wkońcu spada coraz szybciej, w tym wypadku będzie równa prędkość).
P-69120
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-11-13 16:46:52
To: 
C/C++
if( skok && stiv_y > poczatkowa_pozycja_ludka - 30 ) stiv_y--;

if( skok && stiv_y != poczatkowa_pozycja_ludka ) stiv_y++;

if( skok && stiv_y == poczatkowa_pozycja_ludka ) skok = false;

ma być w pętli głównej jeszcze? czy poza?
P-69123
bingo009
» 2012-11-13 16:51:09
To ma być w pętli głównej, na końcu, za wszystkim(rysowaniem, logiką itp.).
P-69124
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-11-13 16:56:48
Daje to przed blitami i nie działa ;/  zmienia się wartość bool`a z 0 na 1 ale nie podskakuje ;/
P-69125
bingo009
» 2012-11-13 17:06:52
Przepraszam, mój błąd.:
C/C++
bool skokwgore = false;
bool skokwdol = false;
int poczatkowa_pozycja_ludka;

//petla glowna
if( klawisz == space && !skokwgore && !skokwdol )
{
    poczatkowa_pozycja_ludka = pozycja_ludka;
    skokwgore = true;
}

//Gdzies na koncu za wszystkim
if( skokwgore && pozycja_ludka > poczatkowa_pozycja_ludka - 30 ) pozycja_ludka--;

if( skokwgore && pozycja_ludka == poczatkowa_pozycja_ludka - 30 )
{
    skokwgore = false;
    skokwdol = true
}

if( skokwdol && pozycja_ludka != poczatkowa_pozycja_ludka ) pozycja_ludka++;

if( skokwdol && pozycja_ludka == poczatkowa_pozycja_ludka ) skokwdol = false;


To jest tylko taki prymitywny przykład, aby pokazać ci jak to wygląda, powinieneś go ulepszyć.
P-69126
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-11-13 17:39:15
Jak dałem to, to nie działają mi kolizje z kaflami ;/ 

POPRAWKA: Działa, ale nie zawsze: Muszę pokombinować i pare razy "ręcznie" zmienić pozycję y  i  skakać jednocześnie ;/
P-69136
bingo009
» 2012-11-13 22:15:50
To jest tylko przykład. Musisz napisać własny skok, który będzie współgrał z twoją kolizją. Ja ci dałem najgłupszy przykład.
P-69193
« 1 » 2
  Strona 1 z 2 Następna strona