diff --git a/320.игрок.js b/320.игрок.js index d7e1c8f..5184e02 100644 --- a/320.игрок.js +++ b/320.игрок.js @@ -37,7 +37,7 @@ } мир.игрок.переместить(); - мир.игрок.задатьМаскуСтолкновения(); + //мир.игрок.задатьМаскуСтолкновения(); мир.игрок.отслеживатьПрыжкиПриземления(); }; @@ -77,31 +77,14 @@ // // // // +/* мир.игрок.задатьМаскуСтолкновения = function() { var прыжок = мир.игрок.тело.velocity.y < -1; var маска = прыжок ? 1 : (1 | 2); мир.игрок.тело.collisionFilter.mask = маска; - -/* -if (тело.velocity.y < мир.игрок.minv) -{ - мир.игрок.minv = тело.velocity.y; -} -if (тело.velocity.y > мир.игрок.maxv) -{ - мир.игрок.maxv = тело.velocity.y; -} -document.getElementById("отладка").innerHTML = `min: ${мир.игрок.minv} max: ${мир.игрок.maxv}`; - -if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001) -{ - мир.игрок.было = тело.velocity.y; - console.debug("vel", мир.игрок.было); -} -*/ - }; +*/ // // // / diff --git a/360.маскиПрыжков.js b/360.маскиПрыжков.js new file mode 100644 index 0000000..5f9b66b --- /dev/null +++ b/360.маскиПрыжков.js @@ -0,0 +1,54 @@ +мир.маскиПрыжков = { + задано: {}, +}; + + +// // // // + + +мир.ключники.push(function(ключ, путь, значение){ + if (!путь[0].startsWith("маскиПрыжков")) + { + return; + } + + var имя = путь[1]; + var свойство = путь.slice(2).join("."); + + if (!мир.маскиПрыжков.задано[имя]) + { + мир.маскиПрыжков.задано[имя] = {}; + } + мир.маскиПрыжков.задано[имя][свойство] = значение; +}); + + +// // // // + + +мир.маскиПрыжков.обновить = function() +{ + var за = мир.маскиПрыжков.задано; + + for (var имя in за) + { + var з = за[имя]; + var объект = з["объект"]; + var скорость = з["скорость"]; + var маскаДо = з["маски.0"]; + var маскаПосле = з["маски.1"]; + if (!объект || (скорость == null) || (маскаДо == null) || (маскаПосле == null)) + { + continue; + } + + var тело = мир.объекты.тела[объект]; + if (!тело) + { + continue; + } + + var маска = (тело.velocity.y < скорость) ? маскаДо : маскаПосле; + тело.collisionFilter.mask = маска; + } +}; diff --git a/700.пуск.js b/700.пуск.js index 474beb6..237e958 100644 --- a/700.пуск.js +++ b/700.пуск.js @@ -4,6 +4,7 @@ мир.объекты.обновить(); мир.игрок.обновить(); мир.слежение.обновить(); + мир.маскиПрыжков.обновить(); requestAnimationFrame(мир.обновить); }; diff --git a/800.пример.json.js b/800.пример.json.js index 3d5cecf..b4982e1 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -21,7 +21,7 @@ ширина: 355, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, }, полКрышки: { @@ -30,7 +30,7 @@ ширина: 135, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, }, полСправа: { @@ -39,7 +39,7 @@ ширина: 1505, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, }, стол: { @@ -48,7 +48,7 @@ ширина: 610, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -62,7 +62,7 @@ ширина: 200, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { angle: -0.0698, @@ -112,7 +112,7 @@ }, игрок: { объект: "кирпич", - скорость: [5, 12], + скорость: [5, 12.5], клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"], }, слежение: { @@ -127,6 +127,13 @@ скорость: 0.1, }, }, + маскиПрыжков: { + игрок: { + объект: "кирпич", + скорость: -1, + маски: [1, 1|2], + }, + }, }); // // // // @@ -141,7 +148,7 @@ ширина: 550, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -156,7 +163,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -171,7 +178,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -186,7 +193,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -201,7 +208,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -216,7 +223,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -231,7 +238,7 @@ высота: 10, вид: { background: "url(р/отладка/основа.jpg)", - //display: "none", + display: "none", }, физика: { collisionFilter: { @@ -267,14 +274,6 @@ подкинули: false, }; -/* - мир.отладка = { - сенсор: null, - стрела: null, - срабатывание: false, - }; - */ - мир.разобрать({ объекты: { сенсор: { @@ -314,6 +313,7 @@ ширина: 100, вид: { background: "url(р/отладка/основа.jpg)", + display: "none", }, физика: { isStatic: true, @@ -361,9 +361,16 @@ мир.подкидываниеСтрелы.подкинули = true; Matter.Body.setVelocity( мир.объекты.тела.стрела, - { x: 0, y: -мир.игрок.приземление.скорость * 2 } + { x: 0, y: -мир.игрок.приземление.скорость * 1.2 } ); }, ], }, + маскиПрыжков: { + стрела: { + объект: "стрела", + скорость: -1, + маски: [0, 2|4] + }, + }, }); diff --git a/index.html b/index.html index cb393f2..1d3be41 100644 --- a/index.html +++ b/index.html @@ -38,6 +38,7 @@ +