tvorimvsevmeste пишет:
Это тоже решение, хотя я надеялся, что удастся получить как runtime значения переменных или возвращаемый результат функции.

Описывайте, пожалуйста, свои надежды сразу в ТЗ.
Если нужно записывать результат в переменные, то можно сделать, скажем, вот так:
function enemyPosToVars(enemyIndex, xVar, yVar) {
if (!SceneManager._scene._spriteset || !SceneManager._scene._spriteset._enemySprites)
return;
var sprites = SceneManager._scene._spriteset._enemySprites
.filter((eSpr) => eSpr._enemy.index() == enemyIndex);
if (sprites.length == 1) {
var sprite = sprites[0];
$gameVariables.setValue(xVar, sprite.x);
$gameVariables.setValue(yVar, sprite.y - sprite._frame.height);
}
}
Код так себе (в идеале надо бы сократить использование приватных переменных), но должен работать.
Сохраните в файл как плагин, а дальше вызывайте командой «вызов скрипта» вот так:
enemyPosToVars(0, 10, 11)
// Замените 0 на номер противника в отряде (0 — первый, 1 — второй, и т.п.)
// замените 10 на номер переменной для координаты X
// замените 11 на номер переменной для координаты Y
А чтобы переместить спрайт, можно попробовать сделать какую-то такую функцию:
function moveEnemyTo(enemyIndex, x, y) {
if (!SceneManager._scene._spriteset)
return;
var sprites = SceneManager._scene._spriteset._enemySprites
.filter((eSpr) => eSpr._enemy.index() == enemyIndex);
if (sprites.length == 1) {
var sprite = sprites[0];
sprite.setHome(x, y + sprite._frame.height);
}
}
Вызывается так:
moveEnemyTo(0, 100, 300)
// Замените 0 на номер противника в отряде (0 — первый, 1 — второй, и т.п.)
// замените 100 на координату X
// замените 300 на координату Y
Засада в том, что эту функцию надо вызывать уже после того, как битва началась и спрайты создались. То есть они сначала создадутся на стандартном месте, а потом можно их переместить.