Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] kolizje w grze 2d
Forum PHP.pl > Forum > Przedszkole
-remosek-
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.
-remosek-
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 ...
erix
Cache z tablicą pól?
-remosek-
A jakiś przykład byś mógł dać ?
erix
Czego nie rozumiesz?
-remosek-
nigdy nie uzywalem cachowania i w sumie nie wiem jak to zrobić ... a nastepnie jak je sprawdzic kolizje
CuteOne
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"
remosek
super dzięki ide z tym kombinować smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.