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

195 lines
4.5KB

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