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

309 lines
7.7KB

  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. мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
  14. мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3");
  15. };
  16. // // // //
  17. СоздатьИзбу = мир =>
  18. {
  19. мир.сцена.add.image(0, 0, "изба").setOrigin(0, 0);
  20. мир.сцена.sound.play("звук-избы", { loop: true });
  21. };
  22. // // // //
  23. СоздатьПолыИСтеныКаркаса = мир =>
  24. {
  25. var полы = [
  26. {
  27. x: 0,
  28. y: 585,
  29. ширина: 43,
  30. },
  31. {
  32. x: 300,
  33. y: 585,
  34. ширина: 30,
  35. },
  36. {
  37. x: 510,
  38. y: 585,
  39. ширина: 200,
  40. },
  41. ];
  42. for (var номер in полы)
  43. {
  44. var пол = полы[номер];
  45. var элемент = мир.каркас.create(пол.x, пол.y, "основа").setOrigin(0, 0);
  46. элемент.setScale(пол.ширина, 1).refreshBody();
  47. элемент.setVisible(false);
  48. }
  49. var стены = [
  50. {
  51. x: 0,
  52. y: 385,
  53. высота: 50,
  54. },
  55. {
  56. x: 2000,
  57. y: 385,
  58. высота: 50,
  59. },
  60. ];
  61. for (var номер in стены)
  62. {
  63. var стена = стены[номер];
  64. var элемент = мир.каркас.create(стена.x, стена.y, "основа");
  65. элемент.setScale(1, стена.высота).refreshBody();
  66. элемент.setVisible(false);
  67. }
  68. };
  69. // // // //
  70. СоздатьПлатформы = мир =>
  71. {
  72. var п = [
  73. {
  74. x: 583,
  75. y: 473,
  76. ширина: 65,
  77. },
  78. {
  79. x: 666,
  80. y: 340,
  81. ширина: 3,
  82. },
  83. {
  84. x: 771,
  85. y: 340,
  86. ширина: 3,
  87. },
  88. {
  89. x: 862,
  90. y: 340,
  91. ширина: 3,
  92. },
  93. {
  94. x: 995,
  95. y: 345, // НАДО 345, чтобы не допрыгиать без помощи кота.
  96. ширина: 4,
  97. },
  98. {
  99. x: 620,
  100. y: 245,
  101. ширина: 35,
  102. },
  103. {
  104. x: 950,
  105. y: 180,
  106. ширина: 12,
  107. },
  108. {
  109. x: 1270,
  110. y: 427,
  111. ширина: 70,
  112. },
  113. {
  114. x: 1690,
  115. y: 375,
  116. ширина: 20,
  117. },
  118. ];
  119. for (var номер in п)
  120. {
  121. var часть = п[номер];
  122. var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
  123. элемент.setScale(часть.ширина, 1).refreshBody();
  124. элемент.setVisible(false);
  125. }
  126. };
  127. // // // //
  128. ПозволитьПлатформамПропускатьПрыжки = мир =>
  129. {
  130. мир.платформы.children.iterate(function(платформа) {
  131. платформа.body.checkCollision.down = false;
  132. платформа.body.checkCollision.left = false;
  133. платформа.body.checkCollision.right = false;
  134. });
  135. };
  136. // // // //
  137. СоздатьВещи = мир =>
  138. {
  139. var молоко = мир.сцена.physics.add.sprite(830, 430, "молоко");
  140. молоко.setScale(0.5, 0.5).refreshBody();
  141. молоко.depth = 5;
  142. мир.вещи.add(молоко);
  143. };
  144. // // // //
  145. СоздатьПауков = мир =>
  146. {
  147. мир.настройкиПауков = [
  148. {
  149. x: 620,
  150. y: 345,
  151. скорость: 50,
  152. },
  153. {
  154. x: 740,
  155. y: 445,
  156. скорость: 65,
  157. },
  158. {
  159. x: 830,
  160. y: 375,
  161. скорость: 80,
  162. },
  163. {
  164. x: 930,
  165. y: 500,
  166. скорость: 70,
  167. },
  168. ];
  169. мир.пауки = [];
  170. мир.нитиПауков = [];
  171. for (var номер in мир.настройкиПауков)
  172. {
  173. var настройки = мир.настройкиПауков[номер];
  174. var паук = мир.враги.create(настройки.x, настройки.y, "паук");
  175. паук.body.setVelocityY(настройки.скорость);
  176. паук.depth = 10;
  177. мир.пауки.push(паук);
  178. var нить = мир.сцена.add.image(настройки.x - 1, 245, "линия").setOrigin(0, 0);
  179. нить.depth = паук.depth;
  180. мир.нитиПауков.push(нить);
  181. }
  182. };
  183. // // // //
  184. АнимироватьПауков = мир =>
  185. {
  186. for (var номер in мир.пауки)
  187. {
  188. var паук = мир.пауки[номер];
  189. var нить = мир.нитиПауков[номер];
  190. var скорость = мир.настройкиПауков[номер].скорость;
  191. нить.displayHeight = паук.y - нить.y - 5;
  192. if (паук.y > 550)
  193. {
  194. паук.setVelocityY(-скорость);
  195. } else if (паук.y < 270)
  196. {
  197. паук.setVelocityY(скорость);
  198. }
  199. }
  200. };
  201. // // // //
  202. СоздатьМышей = мир =>
  203. {
  204. мир.настройкиМышей= [
  205. {
  206. x: 350,
  207. y: 575,
  208. скорость: 290,
  209. },
  210. {
  211. x: 740,
  212. y: 575,
  213. скорость: 375,
  214. },
  215. ];
  216. мир.мыши = [];
  217. for (var номер in мир.настройкиМышей)
  218. {
  219. var настройки = мир.настройкиМышей[номер];
  220. var мышь = мир.враги.create(настройки.x, настройки.y, "мышь");
  221. мышь.body.setVelocityX(настройки.скорость);
  222. мышь.depth = 10;
  223. мышь.flipX = true;
  224. мир.мыши.push(мышь);
  225. }
  226. };
  227. // // // //
  228. АнимироватьМышей = мир =>
  229. {
  230. for (var номер in мир.мыши)
  231. {
  232. var мышь= мир.мыши[номер];
  233. var скорость = мир.настройкиМышей[номер].скорость;
  234. if (мышь.x > 1950)
  235. {
  236. мышь.setVelocityX(-скорость);
  237. мышь.flipX = false;
  238. } else if (мышь.x < 50)
  239. {
  240. мышь.setVelocityX(скорость);
  241. мышь.flipX = true;
  242. }
  243. }
  244. };
  245. /*
  246. *
  247. * Последовательность
  248. *
  249. */
  250. мир.разобрать(`
  251. загрузить ресурсы сцены
  252. загрузить ресурсы избы
  253. создать сцену
  254. создать избу
  255. создать полы и стены каркаса
  256. создать платформы
  257. позволить платформам пропускать прыжки
  258. создать вещи
  259. создать пауков
  260. создать мышей
  261. обновить сцену
  262. анимировать пауков
  263. анимировать мышей
  264. `);