Проверить Matter.js
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

800.пример.json.js 14KB

3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
3年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  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. файл: "р/звуки/387922__setuniman__scheming-1o95.mp3",
  77. повторять: true,
  78. останов: ["покинули избу"],
  79. },
  80. },
  81. });
  82. // // // //
  83. // Игрок
  84. // // // //
  85. мир.разобрать({
  86. изображения: {
  87. колобок: {
  88. ширина: 70,
  89. высота: 70,
  90. вид: {
  91. background: "url(р/колобок/колобок_неподвижен.png)",
  92. //"z-index": 10,
  93. },
  94. },
  95. },
  96. объекты: {
  97. кирпич: {
  98. x: 100,
  99. y: 350,
  100. высота: 20,
  101. ширина: 40,
  102. вид: {
  103. background: "url(р/отладка/основа.jpg)",
  104. //display: "none",
  105. },
  106. },
  107. сенсорИгрока: {
  108. x: 170,
  109. y: 350,
  110. высота: 70,
  111. ширина: 70,
  112. вид: {
  113. background: "url(р/отладка/основа.jpg)",
  114. },
  115. физика: {
  116. isSensor: true,
  117. },
  118. },
  119. игрок: {
  120. x: 100,
  121. y: 350,
  122. части: ["кирпич", "сенсорИгрока"],
  123. физика: {
  124. isStatic: false,
  125. inertia: Infinity,
  126. },
  127. },
  128. },
  129. игрок: {
  130. объект: "рт",
  131. //объект: "кирпич",
  132. скорость: [5, 12.5],
  133. клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
  134. },
  135. слежение: {
  136. /*
  137. колобок: {
  138. объект: "кирпич",
  139. изображение: "колобок",
  140. смещение: [-35, -60],
  141. скорость: 1,
  142. },
  143. */
  144. камера: {
  145. объект: "рт",
  146. //объект: "кирпич",
  147. скорость: 0.1,
  148. },
  149. },
  150. маскиПрыжков: {
  151. игрок: {
  152. объект: "рт",
  153. //объект: "кирпич",
  154. скорость: -1,
  155. маски: [1, 1|2],
  156. },
  157. },
  158. звуки: {
  159. прыжокИгрока: {
  160. события: ["игрок начал прыжок"],
  161. файл: "р/звуки/331381__qubodup__public-domain-jump-sound.wav",
  162. },
  163. },
  164. });
  165. // // // //
  166. // Платформы и объекты печи
  167. // // // //
  168. мир.разобрать({
  169. объекты: {
  170. фундаментПечи: {
  171. x: 570,
  172. y: 470,
  173. ширина: 550,
  174. вид: {
  175. background: "url(р/отладка/основа.jpg)",
  176. display: "none",
  177. },
  178. физика: {
  179. collisionFilter: {
  180. category: 2,
  181. },
  182. },
  183. },
  184. полка1: {
  185. x: 660,
  186. y: 335,
  187. ширина: 40,
  188. высота: 10,
  189. вид: {
  190. background: "url(р/отладка/основа.jpg)",
  191. display: "none",
  192. },
  193. физика: {
  194. collisionFilter: {
  195. category: 2,
  196. },
  197. },
  198. },
  199. полка2: {
  200. x: 767,
  201. y: 335,
  202. ширина: 40,
  203. высота: 10,
  204. вид: {
  205. background: "url(р/отладка/основа.jpg)",
  206. display: "none",
  207. },
  208. физика: {
  209. collisionFilter: {
  210. category: 2,
  211. },
  212. },
  213. },
  214. полка3: {
  215. x: 855,
  216. y: 335,
  217. ширина: 40,
  218. высота: 10,
  219. вид: {
  220. background: "url(р/отладка/основа.jpg)",
  221. display: "none",
  222. },
  223. физика: {
  224. collisionFilter: {
  225. category: 2,
  226. },
  227. },
  228. },
  229. полкаСамовара: {
  230. x: 975,
  231. y: 355,
  232. ширина: 70,
  233. высота: 10,
  234. вид: {
  235. background: "url(р/отладка/основа.jpg)",
  236. display: "none",
  237. },
  238. физика: {
  239. collisionFilter: {
  240. category: 2,
  241. },
  242. },
  243. },
  244. лежанкаПечки: {
  245. x: 600,
  246. y: 242,
  247. ширина: 330,
  248. высота: 10,
  249. вид: {
  250. background: "url(р/отладка/основа.jpg)",
  251. display: "none",
  252. },
  253. физика: {
  254. collisionFilter: {
  255. category: 2,
  256. },
  257. },
  258. },
  259. основаниеТрубыПечки: {
  260. x: 937,
  261. y: 175,
  262. ширина: 130,
  263. высота: 10,
  264. вид: {
  265. background: "url(р/отладка/основа.jpg)",
  266. display: "none",
  267. },
  268. физика: {
  269. collisionFilter: {
  270. category: 2,
  271. },
  272. },
  273. },
  274. самовар: {
  275. x: 650,
  276. y: 300,
  277. ширина: 70,
  278. высота: 120,
  279. вид: {
  280. background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
  281. },
  282. физика: {
  283. isStatic: false,
  284. //inertia: Infinity,
  285. },
  286. },
  287. },
  288. });
  289. // // // //
  290. // Подкидывание стрелы
  291. // // // //
  292. мир.разобрать({
  293. объекты: {
  294. сенсор: {
  295. x: 1280,
  296. y: 400,
  297. ширина: 120,
  298. вид: {
  299. background: "url(р/отладка/основа.jpg)",
  300. display: "none",
  301. },
  302. физика: {
  303. isStatic: true,
  304. isSensor: true,
  305. },
  306. },
  307. стрела: {
  308. x: 1230,
  309. y: 350,
  310. высота: 30,
  311. ширина: 200,
  312. вид: {
  313. display: "inline-block",
  314. background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
  315. transform: "scaleX(-1)",
  316. },
  317. физика: {
  318. isStatic: false,
  319. inertia: Infinity,
  320. collisionFilter: {
  321. category: 4,
  322. },
  323. },
  324. },
  325. лук: {
  326. x: 1250,
  327. y: 200,
  328. ширина: 100,
  329. вид: {
  330. background: "url(р/отладка/основа.jpg)",
  331. display: "none",
  332. },
  333. физика: {
  334. isStatic: true,
  335. collisionFilter: {
  336. category: 4,
  337. },
  338. },
  339. },
  340. },
  341. столкновения: {
  342. стрелаНачало: {
  343. объекты: ["кирпич", "сенсор"],
  344. событие: "сенсор стрелы",
  345. },
  346. стрелаКонец: {
  347. объекты: ["стрела", "лук"],
  348. событие: "стрела и лук",
  349. },
  350. },
  351. маскиПрыжков: {
  352. стрела: {
  353. объект: "стрела",
  354. скорость: -1,
  355. маски: [0, 2|4]
  356. },
  357. },
  358. звуки: {
  359. зарядкаЛука: {
  360. события: ["закинули стрелу"],
  361. файл: "р/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
  362. },
  363. },
  364. });
  365. function ПодкидываниеСтрелы() {
  366. this.создать = function() {
  367. this.времяСтрелы = null;
  368. this.времяПриземления = null;
  369. this.подкинули = false;
  370. this.закинули = false;
  371. this.завершить = null;
  372. мир.события.подписать(this);
  373. };
  374. this.обработатьСобытие = function(событие) {
  375. if (событие == "сенсор стрелы")
  376. {
  377. this.времяСтрелы = мир.физика.движок.timing.timestamp;
  378. this.подкинуть();
  379. }
  380. else if (событие == "игрок приземлился")
  381. {
  382. this.времяПриземления = мир.физика.движок.timing.timestamp;
  383. this.подкинуть();
  384. }
  385. else if (событие == "игрок начал прыжок")
  386. {
  387. this.времяСтрелы = null;
  388. this.времяПриземления = null;
  389. this.подкинули = false;
  390. }
  391. else if (
  392. (событие == "стрела и лук") &&
  393. this.закинули &&
  394. this.завершить
  395. ) {
  396. мир.события.уведомить("закинули стрелу");
  397. мир.события.отписать(this);
  398. this.завершить();
  399. }
  400. };
  401. this.подкинуть = function() {
  402. if (
  403. this.подкинули ||
  404. !this.времяСтрелы ||
  405. !this.времяПриземления ||
  406. Math.abs(this.времяСтрелы - this.времяПриземления) > 0.00001 ||
  407. Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
  408. ) {
  409. return;
  410. }
  411. this.подкинули = true;
  412. Matter.Body.setVelocity(
  413. мир.объекты.тела.стрела,
  414. { x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
  415. );
  416. if (мир.игрок.приземление.скорость > 16)
  417. {
  418. this.закинули = true;
  419. }
  420. };
  421. // Конструктор.
  422. this.создать();
  423. }
  424. мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
  425. мир.подкидываниеСтрелы.завершить = function() {
  426. мир.подкидываниеСтрелы = null;
  427. };
  428. // Запустить звук избы
  429. мир.события.уведомить("вошли в избу");
  430. // // // //
  431. // Отладка событий
  432. // // // //
  433. function ОтладкаСобытий() {
  434. this.обработатьСобытие = function(событие) {
  435. if (событие.startsWith("игрокПаук"))
  436. {
  437. console.debug("событие", событие);
  438. }
  439. };
  440. // Конструктор.
  441. мир.события.подписать(this);
  442. }
  443. мир.отладкаСобытий = new ОтладкаСобытий();
  444. // // // //
  445. // Пауки
  446. // // // //
  447. мир.разобрать({
  448. объекты: {
  449. паук1: {
  450. x: 680,
  451. y: 300,
  452. ширина: 30,
  453. вид: {
  454. background: "url(р/животные/паук.png) no-repeat scroll 0% 0% / contain",
  455. },
  456. физика: {
  457. isStatic: false,
  458. isSensor: true,
  459. },
  460. },
  461. },
  462. столкновения: {
  463. игрокПаук1: {
  464. объекты: ["кирпич", "паук1"],
  465. событие: "игрокПаук1",
  466. },
  467. проверкаСенсораИгрокаРТ: {
  468. объекты: ["рт", "паук1"],
  469. событие: "игрокПаукРТ",
  470. },
  471. проверкаСенсораИгрокаРТ1: {
  472. объекты: ["рт1", "паук1"],
  473. событие: "игрокПаукРТ1",
  474. },
  475. проверкаСенсораИгрокаРТ2: {
  476. объекты: ["рт2", "паук1"],
  477. событие: "игрокПаукРТ2",
  478. },
  479. },
  480. движение: {
  481. паук1: {
  482. объекты: ["паук1"],
  483. скорость: [0.7, 1],
  484. x: [610, 1080],
  485. y: [350, 450],
  486. },
  487. },
  488. });