Проверить Matter.js
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

88 lignes
2.5KB

  1. мир.игрок = {
  2. задано: {},
  3. обновить: function() {
  4. мир.игрок.переместить();
  5. мир.игрок.задатьМаскуСтолкновения();
  6. },
  7. maxv: 0,
  8. minv: 0,
  9. };
  10. // // // //
  11. мир.ключники.push(function(ключ, путь, значение){
  12. if (!ключ.startsWith("игрок"))
  13. {
  14. return;
  15. }
  16. var свойство = путь.slice(1).join(".");
  17. мир.игрок.задано[свойство] = значение;
  18. });
  19. // // // //
  20. мир.игрок.переместить = function()
  21. {
  22. var тело = мир.объекты.тела[мир.игрок.задано.объект];
  23. if (!тело)
  24. {
  25. return;
  26. }
  27. var к = [
  28. мир.игрок.задано["клавиши.0"],
  29. мир.игрок.задано["клавиши.1"],
  30. мир.игрок.задано["клавиши.2"],
  31. ];
  32. var влево = (мир.ввод.клавиши[к[0]] == true);
  33. var вправо = (мир.ввод.клавиши[к[1]] == true);
  34. var вверх = (мир.ввод.клавиши[к[2]] == true);
  35. var скоростьГ = мир.игрок.задано["скорость.0"];
  36. var скоростьВ = мир.игрок.задано["скорость.1"];
  37. var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y;
  38. var скоростьX = 0;
  39. if (влево)
  40. {
  41. скоростьX = -скоростьГ;
  42. }
  43. else if (вправо)
  44. {
  45. скоростьX = скоростьГ;
  46. }
  47. Matter.Sleeping.set(тело, false);
  48. Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
  49. };
  50. // // // //
  51. мир.игрок.задатьМаскуСтолкновения = function()
  52. {
  53. var тело = мир.объекты.тела[мир.игрок.задано.объект];
  54. if (!тело)
  55. {
  56. return;
  57. }
  58. var прыжок = тело.velocity.y < -1;
  59. var маска = прыжок ? 1 : (1 | 2);
  60. тело.collisionFilter.mask = маска;
  61. if (тело.velocity.y < мир.игрок.minv)
  62. {
  63. мир.игрок.minv = тело.velocity.y;
  64. }
  65. if (тело.velocity.y > мир.игрок.maxv)
  66. {
  67. мир.игрок.maxv = тело.velocity.y;
  68. }
  69. document.getElementById("отладка").innerHTML = `min: ${мир.игрок.minv} max: ${мир.игрок.maxv}`;
  70. };