Autor Wątek: Kolizja z mapą , przedmiotami itd.  (Przeczytany 5527 razy)

Offline KumandoS

  • Użytkownik

# Październik 07, 2012, 17:45:03
Witam . Mam napisaną prostą gierkę , scrollowanie , wyświetlanie mapy itd , ale brakuje mi 1 . Właśnie kolizji .

Mam skopiowane od easykodera kod na kolizje , ale to jest tylko dla kolizji 2 obiektów .
Ja bym chciał by była możliwość kolizji z większą ilością obiektów .

Pierwsze co chcę zrobić to kolizję z odpowiedniki kafelkami mapy .
Mam tablice , którą wypełniam z pliku . I chciał bym by przy kafelce np. nr 0 była kolizja , a przy innych nie .

To może podam tutaj ten kodzik na kolizje jaki mam teraz :
bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2)
{
     if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
     else return false;
};

Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?

Ewentualnie jeszcze prosił bym o pomoc w zrobieniu "nieprzechodzenia przez ścianę "
Czyli jeżeli kolizja=true to coś tam .

Chodzi mi tutaj o kolizję boxową .


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline flexi

  • Użytkownik

  • +2
# Październik 07, 2012, 18:02:42
Pomogl bym cie, ale nie podoba mi sie to ze nie poszukasz sam nic na necie.

I do tego chamsko piszesz

Cytuj
Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?

Tak bedziemy ci wszystko pisac, a potem co powiesz ze zrobiles gre ;-)?

Dobry jestes, i sory ale nie wroze ci kariery jako programista gier.
« Ostatnia zmiana: Październik 07, 2012, 18:06:09 wysłana przez flexi »

Offline Arthes

  • Użytkownik
    • Gromaniak

  • +2
# Październik 07, 2012, 18:15:32
Ewentualnie jeszcze prosił bym o pomoc w zrobieniu "nieprzechodzenia przez ścianę "
Czyli jeżeli kolizja=true to coś tam .

Chodzi mi tutaj o kolizję boxową .
Pewnie, możemy jeszcze (bo to żaden problem) napisać resztę gry za Ciebie, tylko zapodaj design-doca :)

A tak poważnie - jak już masz kod na wykrywanie kolizji, to po prostu albo przed ruchem sprawdź, czy będzie kolizja (i jak tak, to nie wykonuj ruchu) albo po ruchu (czyli gdy będzie kolizja, to ustaw elementy tak, by stykały się krawędziami - po prostu odbicie w drugą stronę).
« Ostatnia zmiana: Październik 07, 2012, 18:28:06 wysłana przez Arthes »

Offline IgI

  • Użytkownik

# Październik 07, 2012, 18:42:16
Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?
A ile płacisz? A tak na serio. To ciężko poszukać w internecie? http://bit.ly/OLXyuU

Ja bym chciał by była możliwość kolizji z większą ilością obiektów.
Wrzucasz wszystkie obiekty do wektora, a potem sprawdzasz kolizję z każdym po kolej.

P.S. Masz zamiar zakładać temat z każdym problemem, który można rozwiązać używając google.

Offline KumandoS

  • Użytkownik

# Październik 07, 2012, 18:53:37
Po 1 nikt wam nie każe pisać gry za mnie , po 2 poprosiłem o pomoc , nie koniecznie chodzi mi tu o cały kod , ale w jaki sposób się to robi (pseudo kod) , a na końcu i tak przerobię go pod swoje potrzeby . W google szukałem i znalazłem albo ten wypisany wyżej , albo całkowicie niezrozumiały kod .

Offline Kebab_u_Turka

  • Użytkownik

  • +2
# Październik 07, 2012, 19:12:47
@KumandoS Ty co chwila prosisz o pomoc ... Pisałem Ci, zabierz się za to sam, bo inaczej niczego się nie nauczysz ...


Offline rhdbisgrt

  • Użytkownik

# Październik 07, 2012, 19:25:48
Witam . Mam napisaną prostą gierkę , scrollowanie , wyświetlanie mapy itd , ale brakuje mi 1 . Właśnie kolizji .

Gdy twoja postac sie porusza to sprawdzasz czy dla danych wspolrzednych x,y mozna wejsc na to miejsce, piszesz po prostu taka funkcje cos w stylu

bool  CzyMoznaWejsc(int x, int y)
{
  //...
}

jej body zalezy jak trzymasz obiekty na scenie jasli np masz mape kafelkowa a kazdy kafelek ma rozmiar 20x20 to cos w tym stylu

bool  CzyMoznaWejsc(int x, int y)
{
  if(MAPA[y/20][x/20].typ_pola == 0)
      return false;
  esle
     return true;
}

musisz sam rozumiec te mechanizmy, ale to nie jest takie trudne, raczej banał


Offline Gabes

  • Użytkownik
    • Allegro5kurs

  • +1
# Październik 07, 2012, 19:57:42

Offline KumandoS

  • Użytkownik

  • +1
# Październik 07, 2012, 20:32:07
No i dla panów : Arthes ,rhdbisgrt, Gabes wielki + , a nie jak reszta totalny off top .

Ps. Arthes nie trzeba przetłumaczyć bo jest napisane dość zrozumiale jak dla mnie .

Offline flexi

  • Użytkownik

  • +2
# Październik 07, 2012, 20:39:19
I tak za kilka dni / godzin bedzie topic typu "jak zrobic xxx" ;-)

Offline KumandoS

  • Użytkownik

# Październik 08, 2012, 10:57:33
Przeczytałem i przeanalizowałem powyższe materiały , ale nie mogę nigdzie znaleźć jak wyciągnąć z tablicy 2 wymiarowej przypisaną liczbę do jej pola . Np. mam tablicę :
short int map [2][2]
{ 0 , 1
   2 , 3 };

To jaka wykorzystać to w ifie ?

If (ta_wartość_tablicy == 0)
  , ale nie mogę wykombinować jak tą wartość wyciągnąć .

Offline rhdbisgrt

  • Użytkownik

# Październik 08, 2012, 11:31:14
Przeczytałem i przeanalizowałem powyższe materiały , ale nie mogę nigdzie znaleźć jak wyciągnąć z tablicy 2 wymiarowej przypisaną liczbę do jej pola . Np. mam tablicę :
short int map [2][2] =
{ 0 , 1
   2 , 3 };

To jaka wykorzystać to w ifie ?

If (ta_wartość_tablicy == 0)
  , ale nie mogę wykombinować jak tą wartość wyciągnąć .

po prostu

if(map[y][x]==0) { //nie mozna przejsc }


Offline flexi

  • Użytkownik

# Październik 08, 2012, 11:38:46
KumandoS - wez sie za nauke C++ ;-) bo jak narazie to co jest zrobione w kodzie to nie twoja robota tylko tutoriali + osob z tego forum, bez wiedzy programowania i C++ nie zrobisz nic sam, wbij se to do swojej glowy.

Offline rhdbisgrt

  • Użytkownik

# Październik 08, 2012, 12:29:02
KumandoS - wez sie za nauke C++ ;-) bo jak narazie to co jest zrobione w kodzie to nie twoja robota tylko tutoriali + osob z tego forum, bez wiedzy programowania i C++ nie zrobisz nic sam, wbij se to do swojej glowy.

Kolega flexi chyba nie zauwazyl ze odbiorca nie wydaje sie byc specjalnie zainteresowany tego typu pseudo poradami, Pytanie dotyczylo b odstawowych kwestii  no ale niektorzy dopiero sie tego ucza to raczej zupelnie zrozumiale. Kolega kommandos z kolei mz powinien wrzucac tego rodzaju basic tematy raczej w dziale 'szkólka'. (Bo to co akurat dotyczylo allegro bodajze wyladowalo w dziale jezykologia/c++ a to tutaj (nie kwalifikujace sie pod alegro a wylacznie szkólka) w dziale allegro :O )


« Ostatnia zmiana: Październik 08, 2012, 12:37:09 wysłana przez rhdbisgrt »