Browse Source

камера ок

master
parent
commit
a095f0687f
2 changed files with 25 additions and 54 deletions
  1. +25
    -52
      240.слежение.js
  2. +0
    -2
      800.пример.json.js

+ 25
- 52
240.слежение.js View File

@@ -37,22 +37,31 @@

for (var имя in за)
{
var тело = null;
var имяТела = за[имя]["объект"];
if (имяТела)
{
тело = мир.объекты.тела[имяТела];
}

var эл = null;
var формула = null;
if (имя == "камера")
{
эл = document.getElementById("корень");
формула = function(x, y)
{
return [
window.innerWidth / 2 - x,
window.innerHeight / 2 - y,
];
};
}
else
{
эл = мир.слежение.элемент(за[имя]);
}
var тело = null;
var имяТела = за[имя]["объект"];
if (имяТела)
{
тело = мир.объекты.тела[имяТела];
}
мир.слежение.обновитьЭлемент(эл, тело, за[имя], ум);
мир.слежение.обновитьЭлемент(эл, тело, за[имя], ум, формула);
}
};

@@ -75,7 +84,7 @@
// // // //


мир.слежение.обновитьЭлемент = function(элемент, тело, задано, умолчание)
мир.слежение.обновитьЭлемент = function(элемент, тело, задано, умолчание, формула)
{
if (!элемент || !тело)
{
@@ -97,10 +106,16 @@
y0 = элемент.style.top.slice(0, -2);
}
// Цель.
//var x1 = window.innerWidth / 2 - тело.position.x;
//var y1 = window.innerHeight / 2 - тело.position.y;
var x1 = тело.position.x + смещениеX;
var y1 = тело.position.y + смещениеY;
// Более точная настройка.
// Сейчас лишь для камеры.
if (формула)
{
var итог = формула(x1, y1);
x1 = итог[0];
y1 = итог[1];
}
// Плавно.
function lerp(v0, v1, t) {
return v0 * (1 - t) + v1 * t;
@@ -111,45 +126,3 @@
элемент.style.left = `${x}px`;
элемент.style.top = `${y}px`;
};


// // // //


/*
function обновитьКамеру()
{
var объект = мир.камера.задано.объект;
var центрировать = мир.камера.задано.центрировать;
var тело = мир.объекты.тела[объект];
if (!тело || !центрировать)
{
return;
}

var корень = document.getElementById("корень");
// Сейчас.
var x0 = 0;
if (корень.style.left.endsWith("px"))
{
x0 = корень.style.left.slice(0, -2);
}
var y0 = 0;
if (корень.style.top.endsWith("px"))
{
y0 = корень.style.top.slice(0, -2);
}
// Цель.
var x1 = window.innerWidth / 2 - тело.position.x;
var y1 = window.innerHeight / 2 - тело.position.y;
// Плавно.
function lerp(v0, v1, t) {
return v0 * (1 - t) + v1 * t;
}
var x = lerp(x0, x1, центрировать);
var y = lerp(y0, y1, центрировать);

корень.style.left = `${x}px`;
корень.style.top = `${y}px`;
}
*/

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

@@ -115,11 +115,9 @@
смещение: [-35, -65],
скорость: 1,
},
/*
камера: {
объект: "кирпич",
скорость: 0.1,
},
*/
},
});

Loading…
Cancel
Save