Проверить Matter.js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.8KB

  1. мир.платформы = {
  2. умолчание: {
  3. x: 100,
  4. y: 100,
  5. ширина: 40,
  6. высота: 20,
  7. цвет: "ff0000",
  8. },
  9. задано: {},
  10. тела: {},
  11. };
  12. мир.ключники.push(function(ключ, путь, значение){
  13. if (!ключ.startsWith("платформы"))
  14. {
  15. return;
  16. }
  17. var имя = путь[1];
  18. var свойство = путь[2];
  19. // Сохранить заданные значения.
  20. if (!(имя in мир.платформы.задано))
  21. {
  22. мир.платформы.задано[имя] = {};
  23. }
  24. мир.платформы.задано[имя][свойство] = значение;
  25. console.debug("задано", мир.платформы.задано[имя]);
  26. // Удалить физическое тело.
  27. if (имя in мир.платформы.тела)
  28. {
  29. var тело = мир.платформы.тела[имя];
  30. Matter.Composite.remove(мир.физика.движок.world, тело);
  31. }
  32. // Пересоздать физическое тело.
  33. var задано = мир.платформы.задано[имя];
  34. var тело = Matter.Bodies.rectangle(
  35. задано["x"] ? задано["x"] : мир.платформы.умолчание["x"],
  36. задано["y"] ? задано["y"] : мир.платформы.умолчание["y"],
  37. задано["ширина"] ? задано["ширина"] : мир.платформы.умолчание["ширина"],
  38. задано["высота"] ? задано["высота"] : мир.платформы.умолчание["высота"],
  39. {
  40. isStatic: true,
  41. }
  42. );
  43. Matter.Composite.add(мир.физика.движок.world, тело);
  44. });