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

332 lines
8.5KB

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