Проверить Matter.js
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.

388 line
11KB

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