Проверить Matter.js
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

73 rindas
2.0KB

  1. мир.столкновения = {
  2. задано: {},
  3. };
  4. // // // //
  5. мир.ключники.push(function(ключ, путь, значение){
  6. if (!путь[0].startsWith("столкновения"))
  7. {
  8. return;
  9. }
  10. var действие = путь[1];
  11. var объект = путь.slice(2).join(".");
  12. if (!мир.столкновения.задано[действие])
  13. {
  14. мир.столкновения.задано[действие] = {};
  15. }
  16. мир.столкновения.задано[действие][объект] = значение;
  17. });
  18. // // // //
  19. мир.столкновения.создать = function()
  20. {
  21. Matter.Events.on(мир.физика.движок, "collisionActive", мир.столкновения.обработать);
  22. };
  23. // // // //
  24. мир.столкновения.обработать = function(событие)
  25. {
  26. var за = мир.столкновения.задано;
  27. var вывод = "";
  28. for (var действие in за)
  29. {
  30. var имя1 = за[действие]["0"];
  31. var имя2 = за[действие]["1"];
  32. if (!имя1 || !имя2)
  33. {
  34. continue;
  35. }
  36. var пары = событие.pairs;
  37. for (var номер in пары)
  38. {
  39. var пара = пары[номер];
  40. var п1 = мир.объекты.имена[пара.bodyA.id];
  41. var п2 = мир.объекты.имена[пара.bodyB.id];
  42. if (
  43. !((имя1 == п1) && (имя2 == п2)) &&
  44. !((имя1 == п2) && (имя2 == п1))
  45. ) {
  46. continue;
  47. }
  48. мир.действия.совершить(действие);
  49. вывод += `${имя1} x ${имя2}, `;
  50. console.debug("столкновение ожидаемых объектов", пара.bodyA.id, пара.bodyB.id);
  51. }
  52. }
  53. document.getElementById("отладка").innerHTML = вывод;
  54. };