Как установить SV-battler-a в Х,Y

Больше
5 года 10 мес. назад #118146 от tvorimvsevmeste
Хочу попробовать сделать битву-скандал / битву-спор.
К этому очень идут "Galv's Message Styles.js". замечательно рисует комиксовые облачка с текстом нужной точке.
Но нужно знать Х,Y этой точки.
Может кто-то знает как разместить SV-battler-a в конкретную X,Y ?
Наоборот тоже хорошо — узнать Х,Y уже имеющегося баттлера.
Если кто-то знает помогите пожалуйста.

Поживем — увидим,
доживем — узнаем,
переживем — научимся…

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
5 года 10 мес. назад - 5 года 10 мес. назад #118148 от Dmy

tvorimvsevmeste пишет: Наоборот тоже хорошо — узнать Х,Y уже имеющегося баттлера.

Запустите тест битвы или тест игры. В битве нажмите F12.

Откроется окно инструментов разработчика. В нём нужна вкладка Console (она открыта по умолчанию). Скопируйте в неё такой код:
Code:
var members = $gameTroop.members(); console.group('Координаты противников'); SceneManager._scene._spriteset._enemySprites.forEach((e, i) => { var name = members [e._enemy.index()].name() console.log(`${name}: X центра = ${e.x}, Y верха = ${e.y - e._frame.height}`); }) console.groupEnd();

Нажмите Enter, чтобы выполнить код в консоли. В результате его выполнения в консоль выведутся координаты:




Обновлено после написания: исправил ошибку в коде.
Последнее редактирование: 5 года 10 мес. назад пользователем Dmy.
Спасибо сказали: tvorimvsevmeste

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

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

Поживем — увидим,
доживем — узнаем,
переживем — научимся…
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
5 года 10 мес. назад - 5 года 10 мес. назад #118150 от Dmy

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

Описывайте, пожалуйста, свои надежды сразу в ТЗ. :unsure:

Если нужно записывать результат в переменные, то можно сделать, скажем, вот так:
Code:
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); } }

Код так себе (в идеале надо бы сократить использование приватных переменных), но должен работать.

Сохраните в файл как плагин, а дальше вызывайте командой «вызов скрипта» вот так:
Code:
enemyPosToVars(0, 10, 11) // Замените 0 на номер противника в отряде (0 — первый, 1 — второй, и т.п.) // замените 10 на номер переменной для координаты X // замените 11 на номер переменной для координаты Y


А чтобы переместить спрайт, можно попробовать сделать какую-то такую функцию:
Code:
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); } }

Вызывается так:
Code:
moveEnemyTo(0, 100, 300) // Замените 0 на номер противника в отряде (0 — первый, 1 — второй, и т.п.) // замените 100 на координату X // замените 300 на координату Y

Засада в том, что эту функцию надо вызывать уже после того, как битва началась и спрайты создались. То есть они сначала создадутся на стандартном месте, а потом можно их переместить.
Последнее редактирование: 5 года 10 мес. назад пользователем Dmy.
Спасибо сказали: tvorimvsevmeste, Mur, Alx_Yago

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 10 мес. назад #118151 от tvorimvsevmeste
:woohoo:
Ура! Это именно то, что было нужно!
:whistle:
Огромное спасибо!

Поживем — увидим,
доживем — узнаем,
переживем — научимся…
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 10 мес. назад #118164 от tvorimvsevmeste
А ссылочку не кинете?

Поживем — увидим,
доживем — узнаем,
переживем — научимся…

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.095 секунд
Работает на Kunena форум