Browse Source

следить изо

master
parent
commit
4847c4355e
4 changed files with 34 additions and 37 deletions
  1. +6
    -6
      220.игрок.js
  2. +23
    -28
      240.слежение.js
  3. +1
    -1
      700.пуск.js
  4. +4
    -2
      800.пример.json.js

+ 6
- 6
220.игрок.js View File

@@ -1,8 +1,8 @@
мир.игрок = {
задано: {},
обновить: function() {
переместитьИгрока();
задатьИгрокуМаскуСтолкновения();
мир.игрок.переместить();
мир.игрок.задатьМаскуСтолкновения();
},
};

@@ -24,7 +24,7 @@
// // // //


function переместитьИгрока()
мир.игрок.переместить = function()
{
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
@@ -56,13 +56,13 @@ function переместитьИгрока()

Matter.Sleeping.set(тело, false);
Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
}
};


// // // //


function задатьИгрокуМаскуСтолкновения()
мир.игрок.задатьМаскуСтолкновения = function()
{
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
@@ -73,4 +73,4 @@ function задатьИгрокуМаскуСтолкновения()
var прыжок = тело.velocity.y < -1;
var маска = прыжок ? 1 : (1 | 2);
тело.collisionFilter.mask = маска;
}
};

+ 23
- 28
240.слежение.js View File

@@ -1,10 +1,9 @@
мир.слежения = {
мир.слежение = {
умолчание: {
смещение: [0, 0],
скорость: 1,
},
задано: {},
обновить: обновитьСлежения,
};


@@ -12,7 +11,7 @@


мир.ключники.push(function(ключ, путь, значение){
if (!путь[0].startsWith("слежения"))
if (!путь[0].startsWith("слежение"))
{
return;
}
@@ -20,27 +19,24 @@
var имя = путь[1];
var свойство = путь.slice(2).join(".");
if (!мир.слежения.задано[имя])
if (!мир.слежение.задано[имя])
{
мир.слежения.задано[имя] = {};
мир.слежение.задано[имя] = {};
}
мир.слежения.задано[имя][свойство] = значение;
console.debug("слежения.задано имя/свойство", имя, свойство);
мир.слежение.задано[имя][свойство] = значение;
});


// // // //


function обновитьСлежения()
мир.слежение.обновить = function()
{
console.debug("обновитьСлежения");
var за = мир.слежения.задано;
var ум = мир.слежения.умолчание;
var за = мир.слежение.задано;
var ум = мир.слежение.умолчание;

for (var имя in за)
{
console.debug("обновитьСлежения. имя:", имя);
var эл = null;
if (имя == "камера")
{
@@ -48,7 +44,7 @@ console.debug("обновитьСлежения. имя:", имя);
}
else
{
эл = элементСлежения(за[имя]);
эл = мир.слежение.элемент(за[имя]);
}
var тело = null;
var имяТела = за[имя]["объект"];
@@ -56,15 +52,15 @@ console.debug("обновитьСлежения. имя:", имя);
{
тело = мир.объекты.тела[имяТела];
}
обновитьЭлемент(эл, тело, за[имя], ум);
мир.слежение.обновитьЭлемент(эл, тело, за[имя], ум);
}
}
};


// // // //


function элементСлежения(задано)
мир.слежение.элемент = function(задано)
{
var id = null;
var изображение = задано["изображение"];
@@ -72,25 +68,22 @@ function элементСлежения(задано)
{
id = мир.изображения.элементы[изображение].id;
}
var эл = document.getElementById(id);
console.debug("элементСлежения. эл:", эл);
return эл;
}
return document.getElementById(id);
};


// // // //


function обновитьЭлемент(элемент, тело, задано, умолчание)
мир.слежение.обновитьЭлемент = function(элемент, тело, задано, умолчание)
{
if (!элемент || !тело || !умолчание)
if (!элемент || !тело)
{
return;
}
console.debug("обновитьЭлемент. элемент:", элемент, "тело:", тело, "за:", задано, "ум:", умолчание);
var скорость = задано.скорость ? задано.скорость : умолчание.скорость;
var смещениеX = задано.смещение ? задано.смещение[0] : умолание.смещение[0];
var смещениеY = задано.смещение ? задано.смещение[1] : умолание.смещение[1];
var смещениеX = задано["смещение.0"] ? задано["смещение.0"] : умолчание.смещение[0];
var смещениеY = задано["смещение.1"] ? задано["смещение.1"] : умолчание.смещение[1];

// Сейчас.
var x0 = 0;
@@ -115,14 +108,15 @@ console.debug("обновитьЭлемент. элемент:", элемент,
var x = lerp(x0, x1, скорость);
var y = lerp(y0, y1, скорость);

корень.style.left = `${x}px`;
корень.style.top = `${y}px`;
}
элемент.style.left = `${x}px`;
элемент.style.top = `${y}px`;
};


// // // //


/*
function обновитьКамеру()
{
var объект = мир.камера.задано.объект;
@@ -158,3 +152,4 @@ function обновитьКамеру()
корень.style.left = `${x}px`;
корень.style.top = `${y}px`;
}
*/

+ 1
- 1
700.пуск.js View File

@@ -3,7 +3,7 @@
мир.физика.обновить();
мир.объекты.обновить();
мир.игрок.обновить();
//мир.слежения.обновить();
мир.слежение.обновить();
requestAnimationFrame(мир.обновить);
};



+ 4
- 2
800.пример.json.js View File

@@ -5,7 +5,7 @@
ширина: 2000,
высота: 600,
вид: {
//background: "url(р/сцены/изба.jpg)",
background: "url(р/сцены/изба.jpg)",
},
},
колобок: {
@@ -23,9 +23,11 @@
кирпич: {
x: 1170,
y: 350,
высота: 10,
ширина: 70,
вид: {
background: "url(р/отладка/основа.jpg)",
display: "none",
},
физика: {
isStatic: false,
@@ -110,7 +112,7 @@
колобок: {
объект: "кирпич",
изображение: "колобок",
смещение: [0, 0],
смещение: [-35, -65],
скорость: 1,
},
/*


Loading…
Cancel
Save