Перейти к публикации
  • Добавить действие Медленно передвинуть относительно ОСЕЙ указанного предмета


    Electr0
    • Сделано

    нужно создать отдельное действие которое бы позволило мне добавить в библиотеку шаблон лифта с управлением по этажам в библиотеку, на основе которого игроки бы смогли делать что-то свое, т.к. создание таких лифтов сложноватая задача, и хуже того привязанная к конкретной карте, на другой все придется делать заново.

     

    Условия:

    • Действие не должно быть привязано к карте
    • Такой лифт должен пережить
      • перемещение в пространстве всей постройки целиком (телепортация, перемещение всех помеченных предметов по осям)
      • поворот всей постройки в пространстве
    • Сохранение целостности группы передвигаемых одной кнопкой предметов

     

     


    Отзывы пользователей

    Рекомендованные комментарии



    возможно нужно где-то хранить карту относительности позиций предметов друг от друга, адресность предметов обеспечивается тем что у каждого предмета свой UUID это ок, а вот остальное..

    Ссылка на комментарий
    Поделиться на других сайтах

    так как мы не будем задавать заранее на какое значение оси карты доставить предмет, нужно перед запуском действия передвижения предмета на нужный этаж произвести расчеты и записать расчитанное ЦЕЛЕВОЕ значение оси карты во временный кеш действий кнопки.

     

    нужно отбросить из памяти возможность смещения предметов после запуска действия кнопки, после пуска траектория перемещения должна быть расчитана и на нее ничего не должно влиять, поэтому как сказано выше целевые значения осей карты после пуска должны быть записаны в кеше

    Ссылка на комментарий
    Поделиться на других сайтах

    что если.. в действии заставить игрока прописать на какой этаж должен поднятся проп относительно кнопки этажа и какое расстояние между этажами. А дальше.. имея закон одинакового расстояния между этажами мы можем всегда расчитать где окажется предмет. Однако этажные кнопки приказов должны быть как-то обозначены. В таком случае обязательным правилом будет расстановка всех этажных кнопок на каждом этаже и на одинаковой высоте.

     

    Смоделируем.. лифт находится на 4 этаже, вызвали лифт на 2 этаж, в таком случае система зная что мы нажали кнопку приказа второго этажа узнает координату кнопки вызова расположенной на нужном этаже и дальше уже прибавит к координате заданное смещение и тем самым получит координату оси на карте до значения которой нужно довести проп.

    Ссылка на комментарий
    Поделиться на других сайтах

    6 минут назад, Electr0 сказал:

    что если.. в действии заставить игрока прописать на какой этаж должен поднятся проп относительно кнопки этажа и какое расстояние между этажами. А дальше.. имея закон одинакового расстояния между этажами мы можем всегда расчитать где окажется предмет. Однако этажные кнопки приказов должны быть как-то обозначены. В таком случае обязательным правилом будет расстановка всех этажных кнопок на каждом этаже и на одинаковой высоте.

     

    Смоделируем.. лифт находится на 4 этаже, вызвали лифт на 2 этаж, в таком случае система зная что мы нажали кнопку приказа второго этажа узнает координату кнопки вызова расположенной на нужном этаже и дальше уже прибавит к координате заданное смещение и тем самым получит координату оси на карте до значения которой нужно довести проп.

    в таком случае нужно подумать что делать с этажными кнопками приказов которые ездят в кабине лифта. Нужно тогда как-то помечать что кнопка запустившая действие не является кнопкой расположенной на этаже действия.

    Ссылка на комментарий
    Поделиться на других сайтах

    возможно лучше сделать иначе.. Добавляя действие доставки пропа на нужный этаж игрок указывает кнопку вызова лифта расположенную на целевом этаже, и указывает смещение по высоте относительно указанной кнопки. Допустим выбрал кнопку на первом этаже и указал что проп должен быть доставлен на +50 юнитов относительно ее позиции по оси Z в таком случае сервер просто найдет кнопку с указанным UUID на сервере и узнав ее позицию и позицию предмета узнает сколько шагов нужно и прочее. В таком случае не придется указывать этажи и расстояние между этажами, т.к. мы и так знаем относительно какого пропа и насколько нужно доставить предмет.

     

    Из минусов при обновлении UUID в кеше кнопки придется дополнительно залазить в действие и менять UUID и там тоже. 

    Ссылка на комментарий
    Поделиться на других сайтах

    нужно не забыть добавить в UUID Refresh функции перед сохранение слота что у нас теперь есть действие которое содержит в себе UUID предмета который тоже надо обновить в случае смены идов.

    Ссылка на комментарий
    Поделиться на других сайтах

    нужно будет добавить зеленую подсветку для предмета который является предметом относительно которого происходит движение предмета действия (красная подсветка)

    Ссылка на комментарий
    Поделиться на других сайтах

    прототип 0:

    • уже способен переносить туда сюда предметы если ему указать высоту относительно предмета который выбран предметом относительности действия.

     

    что не работает:

    5 часов назад, Electr0 сказал:

    нужно не забыть добавить в UUID Refresh функции перед сохранение слота что у нас теперь есть действие которое содержит в себе UUID предмета который тоже надо обновить в случае смены идов.

     

    из-за этого пока что нельзя сохранять т.к. собьется предмет относительности действия.

     

    так же наблюдается превышения буфера текста меню т.к. название нового действия опять же очень длинное.

     

    название меню выбора предмета относительности такое же как у выбора предмета действия

     

    меню выбора предмета относительности при нажатии назад возвращает на настройку кнопки, а должно на выбор действия для предмета.

     

    Ссылка на комментарий
    Поделиться на других сайтах

    прототип 1:

     

    исправлено:

    • название меню выбора предмета относительности такое же как у выбора предмета действия
    • меню выбора предмета относительности при нажатии назад возвращает на настройку кнопки, а должно на выбор действия для предмета.
    • фикс остатка подсветки предмета при закрытии меню добавления действия. (это характерно и для стройки до версии 2.5.9.6)
    • исправлено отключение подсветки предмета действия после перехода к выбору предмета относительности.

     

    осталось:

    • нельзя сохранять т.к. собьется предмет относительности действия, из-за неадаптированного рефрешера UUID
    • есть превышения буфера текста меню т.к. название нового действия опять же очень длинное. (похоже что просто так не полечить)
    • нужно произвести диагностику предиктивной проверки для выявления есть ли проблемы или нет.
    Ссылка на комментарий
    Поделиться на других сайтах

    прототип 2:

     

    • теперь можно сохранять постройки с новым типом действия предметов.
    • диагностика предиктивной проверки проведена проблем нет.
    • есть превышения буфера текста меню т.к. название нового действия опять же очень длинное. (похоже что просто так не полечить)
    • проверить как сохраняется это все из библиотеки и в библиотеку.
    Ссылка на комментарий
    Поделиться на других сайтах

    Смещения относительно позиции кнопки на этаже в моем лифте:

    • Стена с кнопками: 16.5
    • Пол: -51.7
    • Потолок: 76.2
    • Кнопки: 0.0

     

    настройка намного проще, и не требует расчетов в калькуляторе на каждый этаж, достаточно один раз расчитать расстояния по высоте предметов от кнопки по одному этажу, и если у вас этажи одинаковые и кнопки на этажах относительно пола стоят на одной высоте что и на других этажах то все будет просто.

    Ссылка на комментарий
    Поделиться на других сайтах

    нужно сделать расчет будущей позиции предмета на карте исходя из направления осей предмета относительности вместо текущих значений координат. таким образом действие можно будет применить логичным образом и для направлений по осям X и Y 

    Ссылка на комментарий
    Поделиться на других сайтах

    в таком случае движение будет по всем осям одновременно. Перед стартом нужно будет рассчитать в какую точку должен приехать предмет. точно так же как при обычном движении по осям предмета когда достраивается вектор по направлению оси предмета. Дальше шаговой исполнитель должен будет выполнить пошаговое достижение целевой точки. 

    Ссылка на комментарий
    Поделиться на других сайтах

    пока голова еще работает, я думаю что можно перед стартом действия сделать расчет где окажется целевая позиция, записываем координату X Y Z куда надо поставить проп по окончанию действия, после чего мы стремимся направить туда предмет уже не по одной оси а по всем трем.

    Ссылка на комментарий
    Поделиться на других сайтах

    в случае с движением вдоль осей предмета мы каждый раз на шаг двигали предмет относительно его текущего расположения не вдаваясь в подробности куда он придет.

     

    в случае же с этим нужно достичь конкретную точку из любого положения. 

    Ссылка на комментарий
    Поделиться на других сайтах




    Присоединяйтесь к обсуждению

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

    Гость
    Добавить комментарий...

    ×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

      Разрешено не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Создать...