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

[Allegro]Kolizje lub coś podobnego

Ostatnio zmodyfikowano 2009-06-24 08:54
Autor Wiadomość
Juziogim3
Temat założony przez niniejszego użytkownika
[Allegro]Kolizje lub coś podobnego
» 2009-06-22 11:50:19
Po pracochłonnym stworzeniu mapy(nie wiem czy można ją nazwać kafelkową) uznałem że brakuje mi czegoś w stylu kolizji tzn. jeżeli moja postać podchodzi do któreś z krawędzi mapy to dalej program zakazuje jej iść -> i w tym problem. Mógłby mi ktoś doradzić co zrobić(jak to rozwiązać, lub od czego zacząć)?
(Jak będzie trzeba to wstawię kod i inne pliki)
P-7887
WunM
» 2009-06-22 11:56:11
Temat woda... powiedz z czym dokładnie masz problem.
P-7888
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-22 12:04:55
Gdy rozpoczynam program pojawiam się tu:     X - postać
       _______
     /           /
    /    X   /
   /        /
   ---------
ale jak wciskam strzałkę w prawo to mogę iść aż do końca ekranu(lub jeszcze dalej)
______
       /
      /  X
     /
-----
I teraz jak zrobić aby postać mogła dojść tylko do krawędzi:
  ______
 /       /
/     X/    
       /
-------
Jeżeli w takiej pozycji będę klikał strzałkę w prawo to postać się nie będzie ruszała (lub będzie szła w górę wzdłuż krawędzi)

PS: Postać jest zawsze na środku ekranu, a rusza się mapka
P-7889
TGR
» 2009-06-22 12:15:48
Nie wiem czy dobrze zrozumiałem twój problem, ale może to Ci pomoże -> http://forum.ddt.pl/?Tid=406.
P-7890
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-22 12:23:13
Chodzi oto aby nie mógł zejść z tego żółtego panela:

http://img221.imageshack.us/i/wwwqq.png/
P-7891
malan
» 2009-06-22 15:28:48
Może wczytaj pozycje krawędzi do jakieś tablicy i przy każdym ruchu sprawdzaj, czy aktualna_pozycja!=pozycja_z_tablicy. Jeżeli aktualna_pozycja==pozycja_z_tablicy (czyli ludzik wyszedł poza ekran), to sprawdź w jakiem punkcie znajduje się ludzik i względem tego punktu przesuń go w górę lub w dół itp. Nie wiem czy ta metoda nie spowolni pracy programu, ale tylko to na razie mi przyszło na myśl.
P-7893
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-22 17:22:28
Ehh.. Po dłuższym zastanowieniu i próbach dochodzę do wniosku(aż wstyd się przyznać)że nie umiem wyznaczyć aktualnej pozycji :(
Próbowałem zrobić coś takiego:
C/C++
float mapa_x = 3, mapa_y = 3;
float map_x = 3, map_y = 3;
.....
// SCROLLOWANIE MAPY
if(( key[ KEY_RIGHT ] ) &&( mapa_x < 10 ) ) { mapa_x = mapa_x + 0.05; map_x++; }
if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) ) { mapa_x = mapa_x - 0.05; map_x--; }
if(( key[ KEY_DOWN ] ) &&( mapa_y < 10 ) ) { mapa_y = mapa_y + 0.05; }
if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) ) { mapa_y = mapa_y - 0.05; }
....
if( map_x == 5 ) { mapa_x = 6; map_x = 6; }
wys_mape();
Ale też nie działało :/
A jak podałem :
if(map_x==3)
to działało jednorazowo
P-7898
DejaVu
» 2009-06-22 18:02:08
Moim skromnym zdaniem powinieneś realizować program z założeniem, że mapa jest prostokątem i jest ona narysowana prosto, a nie pod kątem. Obecnie tylko komplikujesz sobie sprawę tym, że musisz sobie przekształcać w pamięci fakt obrócenia mapy o kąt 45 stopni. Po zrobieniu wszystkiego planszę całą możesz później obrócić (jeśli będzie rysowana na buforze). Grafika straci trochę na jakości, jednak efekt uzyskasz w dużo prostszy sposób. Druga metoda to późniejsza modyfikacja kodu pojegająca de'facto na modyfikacji samego rysowania planszy, ludka i obiektów, jednak nie będzie potrzeby modyfikowania algorytmów, sterowania itp., ponieważ to już zostanie wszcześniej zrobione na dużo prostszym modelu świata (mapy).
P-7901
« 1 » 2 3
  Strona 1 z 3 Następna strona