Перейти к содержанию
  • Модифицировать функцию Захватить/Отпустить


    KOllapsE
    • Отклонено

    Пришла на ум система строительства из одной игры (смотреть с 0:36). Возможен ли в режиме Захватить/Отпустить расчёт крайних точек предмета (хотя бы 8 по углам параллелепипеда), затем - насколько крайние точки захваченного предмета приближены к крайним точкам других предметов, а при достаточно маленьком растоянии принудительное их совмещение? Чтобы при этом можно было отключить принудительное вращение по одной или нескольким осям, пометить предметы, точки совмещения которых не надо учитывать?


     


    Обратная связь

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

    Ну позицию восьми крайних точек то я знаю, но надо както понимать за какие притянуть, там много ньюансов на самом то деле, на ум пока не приходит как это запилить 

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

    Думал, как осуществить всё в точности как на видео и решил, что пока лучше остановиться на полуавтоматическом варианте, где меньше расходуются ресурсы сервера, меньше комфорта для игрока, но больше контроля над объектом.




     

    Игрок захватывает объект, нажав цифру 4 (пункт «Захватить/Отпустить» в «Управление»).

    Открывается следующее окно меню, где 4 пункт – «Отпустить», при нажатии на который происходит отпускание объекта и возвращение в предыдущее меню (по сути, останется старый способ). Игрок смотрит на другой объект и помечает его нажатием на 1 – «Пристроить» (кнопки 2 и 3 можно оставить пустыми). Тот объект помечается, дальше идёт работа только с двумя объектами. Для каждого из них рассчитывается ближайшая (из восьми крайних точек объекта в пространстве) к нулевым координатам карты точка (т.е. расчёт и сравнение длин отрезков, все данные имеются). «Нулевая» точка захваченного объекта совмещается с «нулевой» точкой второго объекта.(он весь перемещается с сохранением углов)




     

    Открывается следующее окно меню с пунктами 1 - «Вдоль +Х», 2 – «Вдоль –Х» и т.п. для других осей. Допустим, выберем 1. Берётся ребро второй модели, выходящее из её «нулевой» точки и параллельное оси Х этой модели. Это будет вектор а. Три ребра, выходящие из «нулевой» точки ранее захваченной модели, составят векторы x, y, z. Теперь определим, какое из них ближе всего наклонено к а. Длины x, y, z меняем на длину а, сохранив их углы. Вычитая из а поочерёдно x, y, z, а потом находя длину векторов разности, узнаем наименьший результат. Он укажет на вектор, соответствующее которому ребро надо выровнять с осью Х второй модели, сохранив при этом совмещение «нулевых» точек двух моделей. После этого нулевую точку ранее захваченной модели надо переместить вдоль оси Х второй модели на расстояние, соответствующее длине ребра второй модели вдоль её оси Х. Если бы был выбран пункт 2 – «Вдоль –Х», то надо было бы переместить нулевую точку захваченной ранее модели на расстояние, соответствующее вектору из позапрошлого предложения вниз вдоль оси Х второй модели.




     

    Вот такой «зародыш» у меня пока получился. Наверняка что-то можно сделать проще, используя приёмы кодирования, но я тут ни бум-бум.




     

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

    Если можно визуализировать эти восемь точек координат, то ещё проще: игрок жамкает точку на первом объекте, жамкает точку на втором объекте, точки совмещаются путём перемещения первого объекта, потом выбирает, выравнивать ли по вышеописанному способу углы первого объекта


     

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



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

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

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

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

      Разрешено использовать не более 75 эмодзи.

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

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

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


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

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

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

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

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

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

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