diff --git a/240.слежение.js b/240.слежение.js index 14e2552..24f78ee 100644 --- a/240.слежение.js +++ b/240.слежение.js @@ -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`; -} -*/ diff --git a/800.пример.json.js b/800.пример.json.js index ec4eb57..be41166 100644 --- a/800.пример.json.js +++ b/800.пример.json.js @@ -115,11 +115,9 @@ смещение: [-35, -65], скорость: 1, }, - /* камера: { объект: "кирпич", скорость: 0.1, }, - */ }, });