Проверить Matter.js
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

391 rinda
11KB

  1. // // // //
  2. // Основа избы
  3. // // // //
  4. мир.разобрать({
  5. заголовок: "Колобку здесь быть",
  6. изображения: {
  7. дом: {
  8. ширина: 2000,
  9. высота: 600,
  10. вид: {
  11. background: "url(р/сцены/изба.jpg)",
  12. },
  13. },
  14. },
  15. объекты: {
  16. полСлева: {
  17. x: 0,
  18. y: 580,
  19. ширина: 355,
  20. вид: {
  21. background: "url(р/отладка/основа.jpg)",
  22. display: "none",
  23. },
  24. },
  25. полКрышки: {
  26. x: 357,
  27. y: 580,
  28. ширина: 135,
  29. вид: {
  30. background: "url(р/отладка/основа.jpg)",
  31. display: "none",
  32. },
  33. },
  34. полСправа: {
  35. x: 495,
  36. y: 580,
  37. ширина: 1505,
  38. вид: {
  39. background: "url(р/отладка/основа.jpg)",
  40. display: "none",
  41. },
  42. },
  43. стол: {
  44. x: 1253,
  45. y: 420,
  46. ширина: 610,
  47. вид: {
  48. background: "url(р/отладка/основа.jpg)",
  49. display: "none",
  50. },
  51. физика: {
  52. collisionFilter: {
  53. category: 2,
  54. },
  55. },
  56. },
  57. подоконник: {
  58. x: 1673,
  59. y: 375,
  60. ширина: 200,
  61. вид: {
  62. background: "url(р/отладка/основа.jpg)",
  63. display: "none",
  64. },
  65. физика: {
  66. angle: -0.0698,
  67. collisionFilter: {
  68. category: 2,
  69. },
  70. },
  71. },
  72. },
  73. });
  74. // // // //
  75. // Игрок
  76. // // // //
  77. мир.разобрать({
  78. изображения: {
  79. колобок: {
  80. //x: 100,
  81. x: 1180,
  82. y: 250,
  83. ширина: 70,
  84. высота: 70,
  85. вид: {
  86. background: "url(р/колобок/колобок_неподвижен.png)",
  87. "z-index": 10,
  88. },
  89. },
  90. },
  91. объекты: {
  92. кирпич: {
  93. x: 1170,
  94. y: 350,
  95. высота: 20,
  96. ширина: 40,
  97. вид: {
  98. background: "url(р/отладка/основа.jpg)",
  99. display: "none",
  100. },
  101. физика: {
  102. isStatic: false,
  103. inertia: Infinity,
  104. },
  105. },
  106. },
  107. игрок: {
  108. объект: "кирпич",
  109. скорость: [5, 12.5],
  110. клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
  111. },
  112. слежение: {
  113. колобок: {
  114. объект: "кирпич",
  115. изображение: "колобок",
  116. смещение: [-35, -65],
  117. скорость: 1,
  118. },
  119. камера: {
  120. объект: "кирпич",
  121. скорость: 0.1,
  122. },
  123. },
  124. маскиПрыжков: {
  125. игрок: {
  126. объект: "кирпич",
  127. скорость: -1,
  128. маски: [1, 1|2],
  129. },
  130. },
  131. });
  132. // // // //
  133. // Платформы и объекты печи
  134. // // // //
  135. мир.разобрать({
  136. объекты: {
  137. фундаментПечи: {
  138. x: 570,
  139. y: 470,
  140. ширина: 550,
  141. вид: {
  142. background: "url(р/отладка/основа.jpg)",
  143. display: "none",
  144. },
  145. физика: {
  146. collisionFilter: {
  147. category: 2,
  148. },
  149. },
  150. },
  151. полка1: {
  152. x: 660,
  153. y: 335,
  154. ширина: 40,
  155. высота: 10,
  156. вид: {
  157. background: "url(р/отладка/основа.jpg)",
  158. display: "none",
  159. },
  160. физика: {
  161. collisionFilter: {
  162. category: 2,
  163. },
  164. },
  165. },
  166. полка2: {
  167. x: 767,
  168. y: 335,
  169. ширина: 40,
  170. высота: 10,
  171. вид: {
  172. background: "url(р/отладка/основа.jpg)",
  173. display: "none",
  174. },
  175. физика: {
  176. collisionFilter: {
  177. category: 2,
  178. },
  179. },
  180. },
  181. полка3: {
  182. x: 855,
  183. y: 335,
  184. ширина: 40,
  185. высота: 10,
  186. вид: {
  187. background: "url(р/отладка/основа.jpg)",
  188. display: "none",
  189. },
  190. физика: {
  191. collisionFilter: {
  192. category: 2,
  193. },
  194. },
  195. },
  196. полкаСамовара: {
  197. x: 975,
  198. y: 355,
  199. ширина: 70,
  200. высота: 10,
  201. вид: {
  202. background: "url(р/отладка/основа.jpg)",
  203. display: "none",
  204. },
  205. физика: {
  206. collisionFilter: {
  207. category: 2,
  208. },
  209. },
  210. },
  211. лежанкаПечки: {
  212. x: 600,
  213. y: 242,
  214. ширина: 330,
  215. высота: 10,
  216. вид: {
  217. background: "url(р/отладка/основа.jpg)",
  218. display: "none",
  219. },
  220. физика: {
  221. collisionFilter: {
  222. category: 2,
  223. },
  224. },
  225. },
  226. основаниеТрубыПечки: {
  227. x: 937,
  228. y: 175,
  229. ширина: 130,
  230. высота: 10,
  231. вид: {
  232. background: "url(р/отладка/основа.jpg)",
  233. display: "none",
  234. },
  235. физика: {
  236. collisionFilter: {
  237. category: 2,
  238. },
  239. },
  240. },
  241. самовар: {
  242. x: 650,
  243. y: 300,
  244. ширина: 70,
  245. высота: 120,
  246. вид: {
  247. background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
  248. },
  249. физика: {
  250. isStatic: false,
  251. //inertia: Infinity,
  252. },
  253. },
  254. },
  255. });
  256. // // // //
  257. // Подкидывание стрелы
  258. // // // //
  259. function ПодкидываниеСтрелы(мир) {
  260. this.создать = function() {
  261. мир.события.подписать(this);
  262. };
  263. this.обработатьСобытие = function(событие) {
  264. console.debug("ИГР ПодкидываниеС.обработатьС", событие);
  265. };
  266. // Конструктор.
  267. this.создать();
  268. }
  269. мир.подстр = new ПодкидываниеСтрелы(мир);
  270. мир.подкидываниеСтрелы = {
  271. сенсор: null,
  272. стрела: null,
  273. подкинули: false,
  274. };
  275. мир.разобрать({
  276. объекты: {
  277. сенсор: {
  278. x: 1280,
  279. y: 400,
  280. ширина: 120,
  281. вид: {
  282. background: "url(р/отладка/основа.jpg)",
  283. display: "none",
  284. },
  285. физика: {
  286. isStatic: true,
  287. isSensor: true,
  288. },
  289. },
  290. стрела: {
  291. x: 1230,
  292. y: 350,
  293. высота: 30,
  294. ширина: 200,
  295. вид: {
  296. display: "inline-block",
  297. background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
  298. transform: "scaleX(-1)",
  299. },
  300. физика: {
  301. isStatic: false,
  302. inertia: Infinity,
  303. collisionFilter: {
  304. category: 4,
  305. },
  306. },
  307. },
  308. лук: {
  309. x: 1250,
  310. y: 200,
  311. ширина: 100,
  312. вид: {
  313. background: "url(р/отладка/основа.jpg)",
  314. display: "none",
  315. },
  316. физика: {
  317. isStatic: true,
  318. collisionFilter: {
  319. category: 4,
  320. },
  321. },
  322. },
  323. },
  324. столкновения: {
  325. стрела: {
  326. объекты: ["кирпич", "сенсор"],
  327. событие: "сенсор стрелы",
  328. },
  329. },
  330. действия: {
  331. сенсорСтрелы: [
  332. () => {
  333. мир.подкидываниеСтрелы.сенсор = мир.физика.движок.timing.timestamp;
  334. },
  335. "подкинутьСтрелу",
  336. ],
  337. игрокНачалПрыжок: [
  338. () => {
  339. мир.подкидываниеСтрелы.сенсор = null;
  340. мир.подкидываниеСтрелы.стрела = null;
  341. мир.подкидываниеСтрелы.подкинули = false;
  342. },
  343. ],
  344. игрокПриземлился: [
  345. () => { мир.подкидываниеСтрелы.стрела = мир.физика.движок.timing.timestamp; },
  346. "подкинутьСтрелу",
  347. ],
  348. подкинутьСтрелу: [
  349. () => {
  350. if (
  351. мир.подкидываниеСтрелы.подкинули ||
  352. !мир.подкидываниеСтрелы.стрела ||
  353. !мир.подкидываниеСтрелы.сенсор ||
  354. Math.abs(мир.подкидываниеСтрелы.стрела - мир.подкидываниеСтрелы.сенсор) > 0.00001 ||
  355. Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
  356. ) {
  357. return;
  358. }
  359. мир.подкидываниеСтрелы.подкинули = true;
  360. Matter.Body.setVelocity(
  361. мир.объекты.тела.стрела,
  362. { x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
  363. );
  364. },
  365. ],
  366. },
  367. маскиПрыжков: {
  368. стрела: {
  369. объект: "стрела",
  370. скорость: -1,
  371. маски: [0, 2|4]
  372. },
  373. },
  374. });