Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] kolizje w grze 2d
--remosek--
post 24.07.2012, 12:33:56
Post #1





Goście







Witam mam problem jak zrobić wykrywanie np kafelków poktórych nie można chodzić na mapie 2d mój kod aktualnie wygląda tak:
(Część)
Kod:
  1. if(oEvent.keyCode == 87 || oEvent.keyCode == 38)
  2. {
  3.  
  4. if(freeu)
  5. {
  6. y2--;
  7. send(0,75,2);
  8. } else {
  9. y2++;
  10. }
  11. }
  12.  
  13. function send(ox,oy,direction)
  14. {
  15. $.ajax({
  16. type: "POST",
  17. url: "checkField.php",
  18. data:"nx="+(x2)+"&ny="+(y2)+"&nisland="+(island),
  19. success: function(msg){
  20. if(msg){
  21. go=false;
  22. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(0,"+direction+");",100);
  23. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",150);
  24. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(2,"+direction+");",200);
  25. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",250);
  26. setTimeout("go=true;",250);
  27. switch(ox){
  28. case -75:
  29. freer=true;
  30. break;
  31. case 75:
  32. freel=true;
  33. break;
  34. }
  35. switch(oy){
  36. case -75:
  37. freeb=true;
  38. break;
  39. case 75:
  40. freeu=true;
  41. }
  42.  
  43. } else {
  44. switch(ox){
  45. case -75:
  46. freer=false;
  47. break;
  48. case 75:
  49. freel=false;
  50. break;
  51. }
  52. switch(oy){
  53. case -75:
  54. freeb=false;
  55. break;
  56. case 75:
  57. freeu=false;
  58. break;
  59. }
  60. }
  61. }
  62. });
  63. }

oraz checkfield
  1. <?php
  2. include("./lib.php");
  3. loadFile("classes","player");
  4. global $db;
  5. $x = $_POST['nx'];
  6. $y = $_POST['ny'];
  7. $island = $_POST['nisland'];
  8.  
  9. $sql = "SELECT * FROM map WHERE island='1' AND x='$x' AND y='$y'";
  10. $query = $db->db_query($sql);
  11. $fetch = $db->db_fetch_array($query);
  12. if($fetch['type'] == 1)
  13. {
  14. echo false;
  15. } else {
  16. echo true;
  17. }
  18. ?>

. Po pierwsze aby odmieniać tego false na true gdy jest mozliowsc przejscia. Oraz jak go troche przyspieszyć bo muli serva.
Go to the top of the page
+Quote Post
darko
post 24.07.2012, 14:04:23
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Może tu coś znajdziesz:
http://maryrosecook.com/post/how-to-do-2d-...ision-detection
http://stackoverflow.com/questions/2440377...ision-detection


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
--remosek--
post 24.07.2012, 16:24:29
Post #3





Goście







nie pomogło to zbytnio ;/ Ja juz skrypt mam tylko nie mam pomysłu jak sprawdzać ponownie czy np. w lewo moge isc bo jak ja robie po swojemu te sprawdzwenie to moge przechodzi przez pola które mają być nie przechodzne ...
Go to the top of the page
+Quote Post
erix
post 25.07.2012, 08:51:02
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cache z tablicą pól?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
--remosek--
post 25.07.2012, 13:00:32
Post #5





Goście







A jakiś przykład byś mógł dać ?
Go to the top of the page
+Quote Post
erix
post 25.07.2012, 13:04:21
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czego nie rozumiesz?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
--remosek--
post 25.07.2012, 20:16:53
Post #7





Goście







nigdy nie uzywalem cachowania i w sumie nie wiem jak to zrobić ... a nastepnie jak je sprawdzic kolizje
Go to the top of the page
+Quote Post
CuteOne
post 25.07.2012, 20:32:17
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Stwórz sobie skrypt pobierający całą mapę do tablicy np.
  1.  
  2. while() {
  3.  
  4. $map[$row['x']][$row['y']] = $row;
  5. }


Następnie za pomocą serializacji(lub jsona) utwórz string z tablicy $map i zapisz do pliku. Później zamiast łączyć się z bazą otwórz plik i odserializuj dane. Sprawdzanie:
  1. if($map[$x][$y]['island'] == 1)


Oczywiście istnieje szybsza metoda - wysłanie kawałka mapy do przeglądarki i po jej stronie sprawdzanie czy jest tam "kafelek"

Ten post edytował CuteOne 25.07.2012, 20:33:46
Go to the top of the page
+Quote Post
remosek
post 25.07.2012, 20:45:12
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


super dzięki ide z tym kombinować smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 18:17