PhysX

Добавлен , опубликован
Версия: 1.2 (04.03.2011)
Версия (dev): 1.3 dev2 (21.03.2012)
Выполнение: vJass
Описание: Физический_движок
Чем отличается:
  • скорость
  • функциональность
  • реалистичность
  • простота использования
Для импорта скопировать библиотеку PhysX из карты, либо подключить файл PhysX_v1.2.j.
Полное и подробное описание всех функций в карте и в файле help.txt.

Особенности и версии

1.0:
  • обработка основных физических законов (ударов, силы тяжести, сопротивления воздуха, силы трения)
  • обработка контакта с любым ландшафтом
  • обработка контакта с декорациями
  • обработка скатывания объектов по склонам
  • физика прикрепляется к нужному юниту
  • регистрация событий контактирования с другими объектами (в том числе с преградами и землёй)
1.1:
  • обработка контакта с юнитами (как физический, так и событие)
  • более реалистичная система ударов о преграды и скатывания по склонам
  • исправлены баги событий и несколько багов понижающих производительность
  • настройка для события контакта с преградами/землёй
  • изменён синтаксис (теперь управление объектом через методы внутри и static класса)
  • более аккуратный расчёт и реалистичность движения
  • больше настроек, возможность менять настройки во время игры
  • корректная работа с размерами объекта
1.2:
  • множество новых функций для упрощения работы с объектами
Скачать 1.2 (стабильная сборка)

Разработка

1.3 dev1:
  • тест камешки-live (симуляция настоящих камней)
  • поворот снарядов в направлении полёта (включая вертикальный поворот)
1.3 dev2:
  • трамплин (баг - иногда объекты при встрече препятствия резко выстреливают вверх)
  • CrossStream: Производительность увеличена в 2-3 раза, теперь стабильно выдерживает до 400 активных объектов!
Скачать 1.3 dev2 (тестовая)
TO DO:
  • скатывание, только если склон достаточно крутой (т.е. сила тяжести сильнее трения)
  • возможность задания физических свойств индивидуально для объекта
  • реактивное движение
  • фиксить трамплин -_-
Оставляйте свои пожелания и идеи! Отписывайте найденные баги.
`
ОЖИДАНИЕ РЕКЛАМЫ...
29
система довольно сложная для усвоения в черепной коробке))
25
Ну она не рассчитана на усвоение, там специально вынесены управляющие функции.
15
зачем конечный продукт постить в "vJass"? Сделал > перевел в Jass2 > оптимизировал > выложил
15
там у тебя даже локальные переменные типа integer обнуляются
15
Если бы ты создал массивную наработку или карту, я бы не придерался, а ты умудрился мелкую систему кривовато сделать =)
25
Не знаю, что ты считаешь кривым, но инты я точно не обнуляю=\
15
ну, возможно, это минус vJass'a, я подробно не изучал
я смотрел конечный код и только пугался
Сейчас выясню =)
Вот наше обнуление =)
code
//Исходный код

    method Remove takes nothing returns nothing
      if this.owner!=null then
        call GroupRemoveUnit(owners,this.owner)
        set this.owner = null
      endif
      set this.speed_x = 0.0
      set this.speed_y = 0.0
      set this.speed_z = 0.0
      set this.size = 0.0
      set this.func_contact_unit = ""
      set this.func_contact_ground = ""
      set this.func_full_stop = ""
      set this.mrk = ""
      call this.destroy()
      set this = 0
    endmethod

//Конечный код

    function sa__PhysXObject_Remove takes nothing returns boolean
      local integer this=f__arg_this
      if s__PhysXObject_owner[this]!=null then
        call GroupRemoveUnit(PhysX__owners,s__PhysXObject_owner[this])
        set s__PhysXObject_owner[this]=null
      endif
      set s__PhysXObject_speed_x[this]=0.0
      set s__PhysXObject_speed_y[this]=0.0
      set s__PhysXObject_speed_z[this]=0.0
      set s__PhysXObject_size[this]=0.0
      set s__PhysXObject_func_contact_unit[this]=""
      set s__PhysXObject_func_contact_ground[this]=""
      set s__PhysXObject_func_full_stop[this]=""
      set s__PhysXObject_mrk[this]=""
      call s__PhysXObject_deallocate(this)
      set this=0
      return true
    endfunction
25
Вот наше обнуление =)
О, страшный грех=) Фиг знает, почему так написал.
Но хотя бы радует, что кому-то моя системка интересна=)
Этот комментарий удален
22
Интересно, кому это нужно? По моему эта наработка лишь показывает скил автора.
23
Интересно, кому это нужно?
Были б мои силы копнть, я б уже прикручивал к своей карте Т_Т
22
Hanabishi, жаль что я ни одну "играбельную" карту с использованием таких систем не видел... ='(
30
Mad Ball Arena
физика + фан
правда там свои системы, не эта
22
Clamp, вполне прилично. Можно сказать что мое мнение поменялось. А автору наработки желаю удачи в мапмейкерстве.
15
Поворот по вертикали ценная штука) вечером протестю
а нет, сегодня никак
25
Пожалуйста=)
Пишите, что ещё интересного можно прикрутить.
24
Использование ExecuteFunc, а не TriggerEvaluate чем-то обусловлено? кажется ,второе же немного быстрее было на момент когда я в последний раз видел их сравнение.
Снаряды лучше создавать сразу повернутыми в сторону полета (в горизонтальной плоскости). Тогда запуск снарядов будет более естественно выглядеть.
Очень интересной могла бы быть такая штука, как наборы физических констант, что позволит одновременно иметь на карте объекты, подчиняющиеся различным физическим законам. Не реалистично, зато очень повышает юзабельность.
С точки зрения юзабельности еще можно добавить такие фичи как событие "верхняя точка траектории" и пресет запуска, пытающийся попасть объектом в указанную точку.
Ну и пригодилась бы возможность запустить объект по новой траектории, не пересоздавая его.
15
Там используется экзикат и автор не указал об этом? Ханабиша ты чего?
ну да
25
Там используется экзикат и автор не указал об этом? Ханабиша ты чего?
А что такого? Я эмулирую ивент - запускаю указанную функцию в новом потоке.
TriggerEvaluate
Для этого же надо триггеры создавать.
Снаряды лучше создавать сразу повернутыми в сторону полета
Они так и создаются, просто в примере там 0 забит. Изменю.
Очень интересной могла бы быть такая штука, как наборы физических констант, что позволит одновременно иметь на карте объекты, подчиняющиеся различным физическим законам.
Это довольно просто сделать, ок.
Ну и пригодилась бы возможность запустить объект по новой траектории, не пересоздавая его.
А кто запрещает? Двигаешь в нужную точку, задаёшь скорость.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.