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

Allegro kolizja bez udziału różowego koloru

Ostatnio zmodyfikowano 2010-03-07 01:34
Autor Wiadomość
Piast
Temat założony przez niniejszego użytkownika
Allegro kolizja bez udziału różowego koloru
» 2010-03-06 11:34:42
Witam chciałbym zrobić aby po zderzeniu dwóch obiektów nastąpiła kolizja ale bez udziału tła różowego (rgb 255,0,255)

C/C++
masked_blit( kula2, bufor, 0, 0, bbb, ccc, kula2->w, kula2->h );
masked_blit( strzalka, bufor, 0, 0, mouse_x, mouse_y, strzalka->w, strzalka->h );
tła nie widać ale zachodzi kolizja między różowym kolorem
Jak zrobić aby pominąć kolizję z różowym kolorem ?
P-14658
Bartaz
...
» 2010-03-06 11:38:59
Mógłbyś użyc kolizji z getpixel wtedy by tylko sprawdzalo kolor wybrany przez ciebie(chyba)ale przy takiej kolizji gra raczej nie moze miec zbytnio dużo kolorow.
P-14659
Piast
Temat założony przez niniejszego użytkownika
» 2010-03-06 11:47:38
C/C++
if( kolizja( mouse_x, mouse_y, strzalka->w, strzalka->h, bbb, ccc, kula2->w, kula2->h ) == true )
{
    bbb = 60;
    circlefill( bufor, 50, 325, 15, makecol( 220, 5, 0 ) );
}
Czyli nie ma innej funkcji ,która by pomijała kolizję z różowym kolorem ?
P-14661
szyx_yankez
» 2010-03-06 12:53:27
[code src="c++"/]
C/C++
//Tutaj wstawiaj kod, będzie lepszy efekt.
[/code]
P-14664
kuba1817
» 2010-03-06 14:04:51
Przy sprawdzaniu wspolrzednych mozesz dodac wartosci[ktore najpierw trzeba obliczyc], tak aby ominac rozowe pola. Na obrazku bedzie lepiej widac:

.
.


Obliczasz x oraz y i odpowiednio dodajesz podczas podawania wspolrzednych. Mam nadzieje, ze mnie zrozumiales:)
P-14665
dmx81
» 2010-03-06 23:24:16
C/C++
masked_blit( mapa.obrazek, bufor, 0, 0, 0, 0, 4000, 600 );
rysuj( ludek, bufor );

for( int i = ludek.i_x; i <= ludek.i_x + ludek.i_s; i++ )
{
    for( int j = ludek.i_y; j <= ludek.i_w + ludek.i_y; j++ )
    {
        if( getpixel( mapa.obrazek, i, j ) != makecol( 255, 0, 255 ) &&!( kolizja( ludek, ladowisko1 ) ) &&!( kolizja( ludek, ladowisko2 ) ) &&!( kolizja( ludek, ladowisko3 ) )
        &&!( kolizja( ludek, rozbitek1 ) && rozbitek1.b_disp == true ) &&!( kolizja( ludek, rozbitek2 ) && rozbitek2.b_disp == true ) &&!( kolizja( ludek, rozbitek3 ) && rozbitek3.b_disp == true ) &&!( kolizja( ludek, rozbitek4 ) && rozbitek4.b_disp == true ) )
        {
            textprintf_ex( bufor, font, ludek.i_x, ludek.i_y - 16, makecol( 200, 44, 77 ), - 1, "KOLIZJA !" );
            explozja = true;
            koniec_kolizji = true;
            i = ludek.i_x + ludek.i_s;
            j = ludek.i_y + ludek.i_w;
        }
        else
             explozja = false;
       
    }
}
Tutaj mam czesc mojego kodu, ktory odpowiada za kolizje wg koloru, nie wiem czy dobrz rozumiem twoje pytanie, inaczej mowiac chcesz, aby dotykajac rozowego o rozowe, nie bylo kolizji? wtedy sprawdzasz funkcja getpixel o wpolrzednych np kursora myszki, pozycji ludka itd, czy na danej bitmapie w podanym punkcie jest kolizja i znajduje sie tam kolor rozowy. w moim kodzie za kazdym przejsciem kodu wykonuje sie petla, sprawdzajaca kazdy jeden punkt postaci, czy aby ktorys z nich nie dotyka koloru innego niz rozowy, jesli jest na rozowym lub jest kolizja z jakims wyszczegolnionym obiektem, ktory nie ma powodowac kolizji, wszytsko jest ok, lecz jesli moja postac pojawi sie na kolorze innym niz rozowy, wtedy jest kolizja.
P-14689
malan
» 2010-03-07 00:45:55
Nie wystarczyłby jeden warunek:
C/C++
if( wykryto_kolizje == true && getpixel( bitmapa, poz_x, poz_y ) != kolor_r ó ż owy )
     return true;
else
     return false;

?

P-14691
dmx81
» 2010-03-07 01:27:36
jesli mnie pytasz, to wydaje mi sie, ze nie wystarczylby ten jeden warunek, poniewaz
1. wykrycie kolizji nie jest warunkiem faktycznej kolizji (np kolizja z wieloma obiektami, jak lądowisko, dystrybutor tankowania paliwa, postacie w grze - one nie maja powodowac faktycznej kolizji - czyli u mnie eksplozji) dlatego musze te konkretne wypadki wykluczyc, wiec tak jakby mowie programowi, ze dopoki postac gracza znajduje sie na rozowym ok, jesli postac znajdzie sie "poza" rozowym, ale sa to wlasnie wyszczegolnione obiekty, to tez ok, dopiero, jesli nie sa to one, a kolor nie jest rozowy, uruchom faktyczna kolizje, czyli ekslozja....

jasne, ze mozna pogrupowac w tabele, vektory itd obiekty, ktore nie powoduja kolizji, a jakies inne dzialanie - np dodawanie paliwa itd, no i na pewno z czasem przerobie w ten sposob kod, nawet gdzies zadalem o to pytanie, bo nie bylem pewien, czy tworzac wektor obiektow wlasnej klasy, zajme dodatkowo duzo miejsca, czy beda to tylko wskazniki na obiekty (a ktos mi odpowiedzial, jak dynamicznie dodawac/tworzyc obiekty do vektora, ale nie o to mi chodzilo)
P-14693
« 1 » 2
  Strona 1 z 2 Następna strona