Проверить 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.

113 lines
2.8KB

  1. мир.игрок = {
  2. задано: {},
  3. обновить: function() {
  4. переместитьИгрока();
  5. задатьИгрокуМаскуСтолкновения();
  6. },
  7. соединение: null,
  8. };
  9. // // // //
  10. мир.ключники.push(function(ключ, путь, значение){
  11. if (!ключ.startsWith("игрок"))
  12. {
  13. return;
  14. }
  15. var свойство = путь.slice(1).join(".");
  16. мир.игрок.задано[свойство] = значение;
  17. одинРазСоздатьСоединение();
  18. });
  19. // // // //
  20. function одинРазСоздатьСоединение()
  21. {
  22. if (мир.игрок.соединение)
  23. {
  24. return;
  25. }
  26. /*
  27. var фи = {
  28. isStatic: false,
  29. inertia: Infinity,
  30. collisionFilter: {
  31. mask: 1,
  32. },
  33. };
  34. var игрок = Matter.Bodies.rectangle(1170, 350, 70, 10, фи);
  35. */
  36. //Matter.Composite.add(мир.физика.движок.world, тело);
  37. console.debug("создано соединение");
  38. }
  39. // // // //
  40. function переместитьИгрока()
  41. {
  42. //var тело = мир.объекты.тела[мир.игрок.задано.объект];
  43. var тело = мир.объекты.тела["игрок"];
  44. if (!тело)
  45. {
  46. return;
  47. }
  48. var к = [
  49. мир.игрок.задано["клавиши.0"],
  50. мир.игрок.задано["клавиши.1"],
  51. мир.игрок.задано["клавиши.2"],
  52. ];
  53. var влево = (мир.ввод.клавиши[к[0]] == true);
  54. var вправо = (мир.ввод.клавиши[к[1]] == true);
  55. var вверх = (мир.ввод.клавиши[к[2]] == true);
  56. var скоростьГ = мир.игрок.задано["скорость.0"];
  57. var скоростьВ = мир.игрок.задано["скорость.1"];
  58. var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y;
  59. var скоростьX = 0;
  60. if (влево)
  61. {
  62. скоростьX = -скоростьГ;
  63. }
  64. else if (вправо)
  65. {
  66. скоростьX = скоростьГ;
  67. }
  68. Matter.Sleeping.set(тело, false);
  69. Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
  70. }
  71. // // // //
  72. function задатьИгрокуМаскуСтолкновения()
  73. {
  74. //var тело = мир.объекты.тела[мир.игрок.задано.объект];
  75. var тело = мир.объекты.тела["игрок"];
  76. if (!тело)
  77. {
  78. return;
  79. }
  80. var прыжок = тело.velocity.y < -1;
  81. var маска = прыжок ? 1 : (1 | 2);
  82. тело.collisionFilter.mask = маска;
  83. }