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


    KOllapsE
    • Отклонено

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


     


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

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

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

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

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




     

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

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




     

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




     

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




     

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

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


     

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



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

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

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

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

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

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

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

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


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

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

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

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

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

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

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