Автор Тема: Динамические двери  (Прочитано 3276 раз)

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Динамические двери
« : Апрель 15, 2015, 11:40:49 am »
Всем привет. Появилась тут идея сделать динамические двери, то есть, практически такие же, как в San Andreas. Идея такова: создаём модель двери, прописываем её параметры в файле object.dat чтобы предать динамику, ставим дверь на карту с помощью Cleo-скрипта предварительно получив её handle. В самом же скрипте обозначаем две оси вращения (Y и Z) в разделе констант, что не даст им изменяться. Как-то так. Как считаете, прокатит ли такой разврат?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Динамические двери
« Ответ #1 : Апрель 15, 2015, 08:40:43 pm »
Сомневаюсь, т.к. пытался делать подобным образом "физику" кустов(чтобы их можно было приминать к земле, но не сдвигать). Т.е. там я пытался скриптом постоянно "удерживать" координаты кустов на месте, при этом позволяя им вращаться по осям. В результате спустя секунду-две после, казалось бы, успешного теста куст начинал сначала дрожать, потом двигаться и вытворять подобные "неадекватные" вещи

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Динамические двери
« Ответ #2 : Апрель 17, 2015, 12:00:03 pm »
Можно попробовать сделать двери без скрипта, а через коллизию, смоделить какие-то петли и вставить в дверной проем, чтобы одна модель удерживала вторую, саму дверь прописать в object.dat по типу какого-нибудь легкого ящика, который можно двигать. Правда не знаю, как поведут себя эти коллизии, возможно одна будет всячески пытаться вырваться из второй.
По кустам я бы сделал по аналогии с деревьями во время ветра, там искажается "куб" дерева, не двигая основание.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Динамические двери
« Ответ #3 : Апрель 17, 2015, 10:41:23 pm »
Можно попробовать сделать двери без скрипта, а через коллизию, смоделить какие-то петли и вставить в дверной проем, чтобы одна модель удерживала вторую, саму дверь прописать в object.dat по типу какого-нибудь легкого ящика, который можно двигать. Правда не знаю, как поведут себя эти коллизии, возможно одна будет всячески пытаться вырваться из второй.
Будет то же самое - всяческие глюки вроде дрожащий и в конце концов "выпрыгивающих" дверей. Физика вайса, увы, не того уровня. Вообще - физики такого уровня нет даже в современных играх, так что чаще всего двери имеют программное "крепление", как в SA.

По кустам я бы сделал по аналогии с деревьями во время ветра, там искажается "куб" дерева, не двигая основание.
С кустами я разобрался - сделал им физику "ваньки-встаньки", а центр тяжести поместил в основание куста. Прост всё равно иногда куст "уползает" со своего места

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Динамические двери
« Ответ #4 : Май 25, 2015, 08:06:46 pm »
Возможно все неадекватности связаны вот с чем. При попытке принудительно поменять положение объекта физика игры пытается отреагировать на его перемещение по какому-то свому алгоритму. Например я долго не мог понять, почему элементарный телепорт машины приводит к ее отпружиниванию и кувырканию. Оказалось дело в таких параметрах как изменение вектора скорости 0x70 и вектора угловой скорости 0x7C в структуре CPhysical. Если их обнулять вместе с изменением угла и перемещением, то объект удается утихомирить и спокойно его крутить-вертеть. Проверено только на машинах.