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 за) for (var имя in за)
{ {
var тело = null;
var имяТела = за[имя]["объект"];
if (имяТела)
{
тело = мир.объекты.тела[имяТела];
}

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


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




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

Loading…
Cancel
Save