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 @@
+