|
- мир.игрок = {
- задано: {},
- обновить: function() {
- переместитьИгрока();
- задатьИгрокуМаскуСтолкновения();
- },
- ограничитель: null,
- };
-
-
- // // // //
-
-
- мир.ключники.push(function(ключ, путь, значение){
- if (!ключ.startsWith("игрок"))
- {
- return;
- }
-
- var свойство = путь.slice(1).join(".");
- мир.игрок.задано[свойство] = значение;
-
- одинРазСоздатьОграничитель();
-
- });
-
-
- // // // //
-
-
- function одинРазСоздатьОграничитель()
- {
- if (мир.игрок.ограничитель)
- {
- return;
- }
-
- var игрок = мир.объекты.тела["игрок"];
- var объект = мир.объекты.тела["колобок"];
-
- if (!игрок || !объект)
- {
- return;
- }
-
- мир.игрок.ограничитель = Matter.Constraint.create({
- bodyA: игрок,
- bodyB: объект,
- stiffness: 1,
- });
- Matter.Composite.add(мир.физика.движок.world, мир.игрок.ограничитель);
- console.debug("создан ограничитель");
- }
-
-
- // // // //
-
-
- function переместитьИгрока()
- {
- //var тело = мир.объекты.тела[мир.игрок.задано.объект];
- 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 тело = мир.объекты.тела[мир.игрок.задано.объект];
- var тело = мир.объекты.тела["игрок"];
- if (!тело)
- {
- return;
- }
-
- var прыжок = тело.velocity.y < -1;
- var маска = прыжок ? 1 : (1 | 2);
- тело.collisionFilter.mask = маска;
- }
|