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

[Allegro] platformówka.

Ostatnio zmodyfikowano 2009-08-12 16:22
Autor Wiadomość
DejaVu
» 2009-08-11 16:55:03
Powiem Ci, że dokładnie taki sam problem rozwiązywałem komuś na forum i wklejałem poprawiony kod. Co więcej robiłem nawet do tego obrazek.
P-9326
szyx_yankez
Temat założony przez niniejszego użytkownika
» 2009-08-11 17:00:30
poproszę o link do tej strony.
Dzięki za wszystko
P-9327
malan
» 2009-08-11 17:02:21
P-9328
szyx_yankez
Temat założony przez niniejszego użytkownika
» 2009-08-11 17:17:28
Ja nie mam mapy kafelkowej.Ten temat mi się chyba nie przyda.

Ale wymyśliłem coś takiego.
C/C++
if( key[ KEY_RIGHT ] || key[ KEY_LEFT ] )
{
    if( ludek_x > 400 && kolizja( ludek_x, ludek_y, 100, 100, rura_x, rura_y, 104, 104 ) == true )
    {
        ludek_x++;
       
    } else
    if( ludek_x < 400 && kolizja( ludek_x, ludek_y, 100, 100, rura_x, rura_y, 104, 104 ) == true )
    {
        ludek_x--;
       
    }
}
ludek nie może przejść przez rurę z lewej i prawej strony jednak wciąż może wskoczyć
górą.
Ale tego to już nie umie zrobić.    pomocy!!!!!!
P-9329
DejaVu
» 2009-08-11 22:38:20
Jak pokombinujesz to Ci się uda... szczerze mówiąc to dzisiaj nie mam zbytnio ochoty na zagłębianie się w Twój przedstawiony problem. Na forum do tej pory istnieje 77 różnych stron poświęconych samemu tematowi kolizji na forum. Daje to około 400 postów poświęconych samej kolizji... prawdopodobnie 25% postów to moje odpowiedzi do tematów podobnych jak Twój.
Jednym ze starszych tematów był problem platformówki, na której było zrobione:
1) scrollowanie mapy
2) ludek skaczący
3) platforma na którą ludek mógł stawać
Lista tematów: [google] site:ddt.pl kolizje

To jest bardzo zbliżone tematycznie do tego co Ty chcesz osiągnąć. Poszukaj tego.
P-9335
szyx_yankez
Temat założony przez niniejszego użytkownika
» 2009-08-12 09:37:31
Po długim kombinowaniu wykombinowałem. Coś takiego.
C/C++
int predkosc1 = 0;
int predkosc2 = 0;


if( key[ KEY_RIGHT ] && ludek_y == 435
|| ludek_y == 435 && key[ KEY_LEFT ] )
{
    if( ludek_x > 400 && kolizja( ludek_x, ludek_y, 66, 88, rura_x, rura_y, 94, 98 ) == true )
    {
        ludek_x++;
       
    } else
    if( ludek_x < 400 && kolizja( ludek_x, ludek_y, 66, 88, rura_x, rura_y, 94, 98 ) == true )
    {
        ludek_x--;
       
    }
}


if( kolizja( ludek_x, ludek_y, 66, 88, rura_x, rura_y, 94, 98 ) == true && ludek_y == 355 )
{
    predkosc = 0;
    predkoscx = 0;
    predkosc1 =- 10;
    predkosc2 =- 2;
    poziomgruntu = 356;
}

ludek_y += predkosc1;
ludek_x -= predkosc2;

if( ludek_y >= poziomgruntu )
{
    predkosc1 = 0;
    predkosc2 = 0;
    ludek_y = poziomgruntu;
}


while( juz > 0 )
{
    if( ludek_y == 356 && ludek_x <= 325 )
         poziomgruntu = 435;
   
    if( ludek_y == 356 && ludek_x >= 475 )
         poziomgruntu = 435;
   
    juz--;
}
1. Gdy ide z lewej ludek zatrzymuję sie.
2. Gdy ide z prawej ludek też się zatrzymuje.
3. Gdy skakam z lewej strony na rure ludek staje na niej.
4. Gdy ludek jetst na krawędzi rury spada na ziemie.
To wszystko działa ciesze się.

Jednak gdy skakam z prawej strony na rurę ludek się zapada.

Dlaczego tak się dzieje jaki jest błąd.
I czy dało by się skrócić jakoś ten długi kod.

Z góry dziekuję za odpowiedzi.
P-9340
DejaVu
» 2009-08-12 21:14:48
Jakie są szanse, że wartość zmiennej ludek_y==355? Zauważ, że wartość zmieniasz co kilka jednostek. Musisz warunek lepiej napisać. Przykładowo:

1) wykonaj ruch w bok (lewo/prawo)
2) jeśli jest kolizja - cofnij ostatni ruch
3) wykonaj ruch w górę/w dół
4) jeśli jest kolizja - cofnij ostatni ruch
P-9363
manfred
» 2009-08-11 10:33:52
Najpierw zmień nazwę, bo ten Japończyk od Mario może cię do sądu za to podać.
P-19173
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona