25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109.управление.js 2.6KB

3 년 전
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. *
  3. * Реакции
  4. *
  5. */
  6. НастроитьМышь = мир =>
  7. {
  8. мир.сцена.input.mouse.disableContextMenu();
  9. };
  10. // // // //
  11. УведомитьОМыши = мир =>
  12. {
  13. var мышь = мир.сцена.input.activePointer;
  14. const новое = {
  15. "x": мышь.x,
  16. "y": мышь.y,
  17. "нажата": мышь.isDown,
  18. };
  19. if (
  20. мир.мышь &&
  21. мир.мышь.x == новое.x &&
  22. мир.мышь.y == новое.y &&
  23. мир.мышь.нажата == новое.нажата
  24. ) {
  25. // Ничего не делаем.
  26. }
  27. else
  28. {
  29. мир.мышь = новое;
  30. мир.уведомить("изменили мышь");
  31. }
  32. };
  33. // // // //
  34. УведомитьОбУправлении = мир =>
  35. {
  36. const камера = мир.сцена.cameras.main;
  37. const ширина = камера.width;
  38. const высота = камера.height;
  39. var новое = {
  40. "направление": 0, // Центр.
  41. "прыжок": false,
  42. };
  43. новое.прыжок = (мир.мышь.y < высота * 0.45);
  44. if (мир.мышь.x < ширина * 0.45)
  45. {
  46. новое.направление = -1; // Лево.
  47. }
  48. else if (мир.мышь.x > ширина * 0.55)
  49. {
  50. новое.направление = 1; // Право.
  51. }
  52. // Начало движения.
  53. if (!мир.управление && мир.мышь.нажата)
  54. {
  55. мир.управление = новое;
  56. мир.уведомить("изменили управление");
  57. }
  58. // Окончание движения.
  59. else if (мир.управление && !мир.мышь.нажата)
  60. {
  61. мир.управление = null;
  62. мир.уведомить("изменили управление");
  63. }
  64. // Продолжение движения.
  65. else if (
  66. (мир.управление && мир.мышь.нажата) &&
  67. (
  68. (мир.управление.направление != новое.направление) ||
  69. (мир.управление.прыжок != новое.прыжок)
  70. )
  71. ) {
  72. мир.управление = новое;
  73. мир.уведомить("изменили управление");
  74. }
  75. };
  76. /*
  77. *
  78. * Последовательность
  79. *
  80. */
  81. мир.разобрать(`
  82. создать сцену
  83. настроить мышь
  84. обновить сцену
  85. уведомить о мыши
  86. изменили мышь
  87. уведомить об управлении
  88. `);