Проверить Matter.js
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

358 lignes
10KB

  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],
  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. // // // //
  128. мир.разобрать({
  129. объекты: {
  130. фундаментПечи: {
  131. x: 570,
  132. y: 470,
  133. ширина: 550,
  134. вид: {
  135. background: "url(р/отладка/основа.jpg)",
  136. //display: "none",
  137. },
  138. физика: {
  139. collisionFilter: {
  140. category: 2,
  141. },
  142. },
  143. },
  144. полка1: {
  145. x: 660,
  146. y: 335,
  147. ширина: 40,
  148. высота: 10,
  149. вид: {
  150. background: "url(р/отладка/основа.jpg)",
  151. //display: "none",
  152. },
  153. физика: {
  154. collisionFilter: {
  155. category: 2,
  156. },
  157. },
  158. },
  159. полка2: {
  160. x: 767,
  161. y: 335,
  162. ширина: 40,
  163. высота: 10,
  164. вид: {
  165. background: "url(р/отладка/основа.jpg)",
  166. //display: "none",
  167. },
  168. физика: {
  169. collisionFilter: {
  170. category: 2,
  171. },
  172. },
  173. },
  174. полка3: {
  175. x: 855,
  176. y: 335,
  177. ширина: 40,
  178. высота: 10,
  179. вид: {
  180. background: "url(р/отладка/основа.jpg)",
  181. //display: "none",
  182. },
  183. физика: {
  184. collisionFilter: {
  185. category: 2,
  186. },
  187. },
  188. },
  189. полкаСамовара: {
  190. x: 975,
  191. y: 355,
  192. ширина: 70,
  193. высота: 10,
  194. вид: {
  195. background: "url(р/отладка/основа.jpg)",
  196. //display: "none",
  197. },
  198. физика: {
  199. collisionFilter: {
  200. category: 2,
  201. },
  202. },
  203. },
  204. лежанкаПечки: {
  205. x: 600,
  206. y: 242,
  207. ширина: 330,
  208. высота: 10,
  209. вид: {
  210. background: "url(р/отладка/основа.jpg)",
  211. //display: "none",
  212. },
  213. физика: {
  214. collisionFilter: {
  215. category: 2,
  216. },
  217. },
  218. },
  219. основаниеТрубыПечки: {
  220. x: 937,
  221. y: 175,
  222. ширина: 130,
  223. высота: 10,
  224. вид: {
  225. background: "url(р/отладка/основа.jpg)",
  226. //display: "none",
  227. },
  228. физика: {
  229. collisionFilter: {
  230. category: 2,
  231. },
  232. },
  233. },
  234. самовар: {
  235. x: 650,
  236. y: 300,
  237. ширина: 70,
  238. высота: 120,
  239. вид: {
  240. background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
  241. },
  242. физика: {
  243. isStatic: false,
  244. //inertia: Infinity,
  245. },
  246. },
  247. },
  248. });
  249. // // // //
  250. // Подкидывание стрелы
  251. // // // //
  252. мир.подкидываниеСтрелы = {
  253. сенсор: null,
  254. стрела: null,
  255. подкинули: false,
  256. };
  257. мир.отладка = {
  258. сенсор: null,
  259. стрела: null,
  260. срабатывание: false,
  261. };
  262. мир.разобрать({
  263. объекты: {
  264. сенсор: {
  265. x: 1280,
  266. y: 400,
  267. ширина: 120,
  268. вид: {
  269. background: "url(р/отладка/основа.jpg)",
  270. display: "none",
  271. },
  272. физика: {
  273. isStatic: true,
  274. isSensor: true,
  275. },
  276. },
  277. стрела: {
  278. x: 1230,
  279. y: 350,
  280. высота: 30,
  281. ширина: 200,
  282. вид: {
  283. display: "inline-block",
  284. background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
  285. transform: "scaleX(-1)",
  286. },
  287. физика: {
  288. isStatic: false,
  289. inertia: Infinity,
  290. collisionFilter: {
  291. category: 4,
  292. },
  293. },
  294. },
  295. },
  296. столкновения: {
  297. стрела: {
  298. объекты: ["кирпич", "сенсор"],
  299. действие: "возможноПодкинутьСтрелу",
  300. },
  301. },
  302. действия: {
  303. подкинутьСтрелу: [
  304. () => { Matter.Body.setVelocity(мир.объекты.тела.стрела, { x: 0, y: -мир.игрок.приземление.скорость }); },
  305. ],
  306. возможноПодкинутьСтрелу: [
  307. () => {
  308. мир.отладка.сенсор = мир.физика.движок.timing.timestamp;
  309. },
  310. "вывестиОтладку",
  311. ],
  312. игрокНачалПрыжок: [
  313. () => {
  314. мир.отладка.сенсор = null;
  315. мир.отладка.стрела = null;
  316. мир.отладка.срабатывание = false;
  317. },
  318. ],
  319. игрокПриземлился: [
  320. () => { console.debug("приземлились со скоростью", мир.игрок.приземление.скорость); },
  321. () => {
  322. мир.отладка.стрела = мир.физика.движок.timing.timestamp;
  323. },
  324. "вывестиОтладку",
  325. ],
  326. вывестиОтладку: [
  327. () => {
  328. if (
  329. мир.отладка.срабатывание ||
  330. !мир.отладка.стрела ||
  331. !мир.отладка.сенсор ||
  332. Math.abs(мир.отладка.стрела - мир.отладка.сенсор) > 0.00001 ||
  333. Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001
  334. ) {
  335. return;
  336. }
  337. мир.отладка.срабатывание = true;
  338. мир.действия.совершить("подкинутьСтрелу");
  339. console.debug("раз", мир.отладка.сенсор, мир.отладка.стрела);
  340. },
  341. ],
  342. },
  343. });