мир.игрок = { задано: {}, обновить: function() { мир.игрок.переместить(); мир.игрок.задатьМаскуСтолкновения(); }, maxv: 0, minv: 0, было: 0, }; // // // // мир.ключники.push(function(ключ, путь, значение){ if (!ключ.startsWith("игрок")) { return; } var свойство = путь.slice(1).join("."); мир.игрок.задано[свойство] = значение; }); // // // // мир.игрок.переместить = function() { var тело = мир.объекты.тела[мир.игрок.задано.объект]; if (!тело) { return; } var к = [ мир.игрок.задано["клавиши.0"], мир.игрок.задано["клавиши.1"], мир.игрок.задано["клавиши.2"], ]; var влево = (мир.ввод.клавиши[к[0]] == true); var вправо = (мир.ввод.клавиши[к[1]] == true); var вверх = (мир.ввод.клавиши[к[2]] == true); var скоростьГ = мир.игрок.задано["скорость.0"]; var скоростьВ = мир.игрок.задано["скорость.1"]; var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y; var скоростьX = 0; if (влево) { скоростьX = -скоростьГ; } else if (вправо) { скоростьX = скоростьГ; } Matter.Sleeping.set(тело, false); Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY }); }; // // // // мир.игрок.задатьМаскуСтолкновения = function() { var тело = мир.объекты.тела[мир.игрок.задано.объект]; if (!тело) { return; } 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", мир.игрок.было); } };