Колобок на Phaser
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.

193 lines
4.3KB

  1. /*
  2. *
  3. * Реакции
  4. *
  5. */
  6. ЗагрузитьРесурсыИзбы = мир =>
  7. {
  8. мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
  9. мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
  10. мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
  11. };
  12. // // // //
  13. СоздатьИзбу = мир =>
  14. {
  15. мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0);
  16. };
  17. // // // //
  18. СоздатьПолыИСтеныКаркаса = мир =>
  19. {
  20. var полы = [
  21. {
  22. x: 0,
  23. y: 585,
  24. ширина: 43,
  25. },
  26. {
  27. x: 300,
  28. y: 585,
  29. ширина: 30,
  30. },
  31. {
  32. x: 510,
  33. y: 585,
  34. ширина: 200,
  35. },
  36. ];
  37. for (var номер in полы)
  38. {
  39. var пол = полы[номер];
  40. var элемент = мир.каркас.create(пол.x, пол.y, "основа").setOrigin(0, 0);
  41. элемент.setScale(пол.ширина, 1).refreshBody();
  42. элемент.setVisible(false);
  43. }
  44. var стены = [
  45. {
  46. x: 0,
  47. y: 385,
  48. высота: 50,
  49. },
  50. {
  51. x: 2000,
  52. y: 385,
  53. высота: 50,
  54. },
  55. ];
  56. for (var номер in стены)
  57. {
  58. var стена = стены[номер];
  59. var элемент = мир.каркас.create(стена.x, стена.y, "основа");
  60. элемент.setScale(1, стена.высота).refreshBody();
  61. элемент.setVisible(false);
  62. }
  63. };
  64. // // // //
  65. СоздатьПлатформы = мир =>
  66. {
  67. var п = [
  68. {
  69. x: 583,
  70. y: 473,
  71. ширина: 65,
  72. },
  73. {
  74. x: 666,
  75. y: 340,
  76. ширина: 3,
  77. },
  78. {
  79. x: 771,
  80. y: 340,
  81. ширина: 3,
  82. },
  83. {
  84. x: 862,
  85. y: 340,
  86. ширина: 3,
  87. },
  88. {
  89. x: 995,
  90. y: 345, // НАДО 345, чтобы не допрыгиать без помощи кота.
  91. ширина: 4,
  92. },
  93. {
  94. x: 620,
  95. y: 245,
  96. ширина: 35,
  97. },
  98. {
  99. x: 950,
  100. y: 180,
  101. ширина: 12,
  102. },
  103. {
  104. x: 1270,
  105. y: 427,
  106. ширина: 70,
  107. },
  108. {
  109. x: 1690,
  110. y: 375,
  111. ширина: 20,
  112. },
  113. ];
  114. for (var номер in п)
  115. {
  116. var часть = п[номер];
  117. var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
  118. элемент.setScale(часть.ширина, 1).refreshBody();
  119. элемент.setVisible(false);
  120. }
  121. };
  122. // // // //
  123. ПозволитьПлатформамПропускатьПрыжки = мир =>
  124. {
  125. мир.платформы.children.iterate(function(платформа) {
  126. платформа.body.checkCollision.down = false;
  127. платформа.body.checkCollision.left = false;
  128. платформа.body.checkCollision.right = false;
  129. });
  130. };
  131. // // // //
  132. СоздатьВрагов = мир => {
  133. var враг = мир.сцена.physics.add.sprite(750, 100, "основа");
  134. враг.setScale(5, 5).refreshBody();
  135. враг.depth = 10;
  136. мир.враги.add(враг);
  137. };
  138. // // // //
  139. СоздатьВещи = мир => {
  140. var молоко = мир.сцена.physics.add.sprite(750, 400, "молоко");
  141. молоко.setScale(0.5, 0.5).refreshBody();
  142. молоко.depth = 10;
  143. мир.вещи.add(молоко);
  144. };
  145. /*
  146. *
  147. * Последовательность
  148. *
  149. */
  150. мир.разобрать(`
  151. загрузить ресурсы сцены
  152. загрузить ресурсы избы
  153. создать сцену
  154. создать избу
  155. создать полы и стены каркаса
  156. создать платформы
  157. позволить платформам пропускать прыжки
  158. создать врагов
  159. создать вещи
  160. `);