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

346 lines
8.7KB

  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. x: 1270,
  116. y: 427,
  117. ширина: 70,
  118. },
  119. {
  120. x: 1690,
  121. y: 375,
  122. ширина: 20,
  123. },
  124. ];
  125. for (var номер in п)
  126. {
  127. var часть = п[номер];
  128. var элемент = мир.платформы.create(часть.x, часть.y, "основа").setOrigin(0, 0);
  129. элемент.setScale(часть.ширина, 1).refreshBody();
  130. элемент.setVisible(false);
  131. }
  132. };
  133. // // // //
  134. ПозволитьПлатформамПропускатьПрыжки = мир =>
  135. {
  136. мир.платформы.children.iterate(function(платформа) {
  137. платформа.body.checkCollision.down = false;
  138. платформа.body.checkCollision.left = false;
  139. платформа.body.checkCollision.right = false;
  140. });
  141. };
  142. // // // //
  143. СоздатьВещи = мир =>
  144. {
  145. var молоко = мир.сцена.physics.add.sprite(785, 240, "молоко");
  146. молоко.setScale(0.4, 0.4).refreshBody();
  147. молоко.depth = 5;
  148. мир.вещи.add(молоко);
  149. var самовар = мир.сцена.physics.add.sprite(1003, 200, "самовар");
  150. самовар.setScale(0.25, 0.25).refreshBody();
  151. самовар.depth = 5;
  152. мир.вещи.add(самовар);
  153. };
  154. // // // //
  155. СоздатьПауков = мир =>
  156. {
  157. мир.настройкиПауков = [
  158. {
  159. x: 620,
  160. y: 345,
  161. скорость: 50,
  162. низ: 550,
  163. верх: 270,
  164. },
  165. /*
  166. {
  167. x: 740,
  168. y: 445,
  169. скорость: 65,
  170. низ: 550,
  171. верх: 270,
  172. },
  173. {
  174. x: 830,
  175. y: 375,
  176. скорость: 80,
  177. низ: 550,
  178. верх: 270,
  179. },
  180. */
  181. {
  182. x: 785,
  183. y: 375,
  184. скорость: 80,
  185. низ: 400,
  186. верх: 270,
  187. },
  188. {
  189. x: 930,
  190. y: 500,
  191. скорость: 70,
  192. низ: 550,
  193. верх: 270,
  194. },
  195. {
  196. x: 1003,
  197. y: 250,
  198. скорость: 55,
  199. низ: 400,
  200. верх: 200,
  201. },
  202. ];
  203. мир.пауки = [];
  204. мир.нитиПауков = [];
  205. for (var номер in мир.настройкиПауков)
  206. {
  207. var настройки = мир.настройкиПауков[номер];
  208. var паук = мир.враги.create(настройки.x, настройки.y, "паук");
  209. паук.body.setVelocityY(настройки.скорость);
  210. паук.depth = 10;
  211. мир.пауки.push(паук);
  212. var нить = мир.сцена.add.image(настройки.x - 1, настройки.верх - 25, "линия").setOrigin(0, 0);
  213. нить.depth = паук.depth;
  214. мир.нитиПауков.push(нить);
  215. }
  216. };
  217. // // // //
  218. АнимироватьПауков = мир =>
  219. {
  220. for (var номер in мир.пауки)
  221. {
  222. var паук = мир.пауки[номер];
  223. var нить = мир.нитиПауков[номер];
  224. var настройки = мир.настройкиПауков[номер];
  225. нить.displayHeight = паук.y - нить.y - 5;
  226. if (паук.y > настройки.низ)
  227. {
  228. паук.setVelocityY(-настройки.скорость);
  229. } else if (паук.y < настройки.верх)
  230. {
  231. паук.setVelocityY(настройки.скорость);
  232. }
  233. }
  234. };
  235. // // // //
  236. СоздатьМышей = мир =>
  237. {
  238. мир.настройкиМышей= [
  239. {
  240. x: 350,
  241. y: 575,
  242. скорость: 290,
  243. },
  244. {
  245. x: 740,
  246. y: 575,
  247. скорость: 375,
  248. },
  249. ];
  250. мир.мыши = [];
  251. for (var номер in мир.настройкиМышей)
  252. {
  253. var настройки = мир.настройкиМышей[номер];
  254. var мышь = мир.враги.create(настройки.x, настройки.y, "мышь");
  255. мышь.body.setVelocityX(настройки.скорость);
  256. мышь.depth = 10;
  257. мышь.flipX = true;
  258. мир.мыши.push(мышь);
  259. }
  260. };
  261. // // // //
  262. АнимироватьМышей = мир =>
  263. {
  264. for (var номер in мир.мыши)
  265. {
  266. var мышь= мир.мыши[номер];
  267. var скорость = мир.настройкиМышей[номер].скорость;
  268. if (мышь.x > 1950)
  269. {
  270. мышь.setVelocityX(-скорость);
  271. мышь.flipX = false;
  272. } else if (мышь.x < 50)
  273. {
  274. мышь.setVelocityX(скорость);
  275. мышь.flipX = true;
  276. }
  277. }
  278. };
  279. /*
  280. *
  281. * Последовательность
  282. *
  283. */
  284. мир.разобрать(`
  285. загрузить ресурсы сцены
  286. загрузить ресурсы избы
  287. создать сцену
  288. создать избу
  289. создать полы и стены каркаса
  290. создать платформы
  291. позволить платформам пропускать прыжки
  292. создать вещи
  293. создать пауков
  294. создать мышей
  295. обновить сцену
  296. анимировать пауков
  297. анимировать мышей
  298. `);