У меня возникла проблема с Farseer Physics Engine, где в мозаичной среде мой объект иногда взаимодействует с углами других объектов, даже если они идеально выровнены.
Я читал о людях, предлагающих вам рассчитать и создать один более крупный объект, используя Марширующие квадраты или что-то подобное. Однако это не вариант, так как я хотел бы, чтобы каждая плитка имела разные физические качества, например, различное трение и восстановление.
Мой вопрос в том, что именно вызывает это, это проблемы точности с плавающей точкой или что-то еще? И есть ли способ это исправить, не сломав весь физический движок?
xna
physics
farseer-physics-engine
Уильям Мариажер
источник
источник
Ответы:
Farseer использует итеративный решатель, поэтому, когда ваше колесо начинает сталкиваться с другим прямоугольником на высокой скорости, время от времени вы будете сталкиваться с неровностями, поскольку это «идеальное выравнивание» для нас, а не для моделирования физики, с итерациями, подобными этим, будет никогда не будь "идеальным по пикселям".
Вам придется преобразовывать прямоугольники в формы Edge / Loop, а затем моделировать различные физические качества с помощью хаков, таких как создание искусственных границ плитки и затем изменение свойств, когда персонаж входит в ограничивающий прямоугольник, но не все физические качества можно эмулировать таким образом.
Рано или поздно вы закончите писать свою физику на основе тайлов вместо Farseer. Если в вашей игре нет множества сложных головоломок по физике, будет проще полностью отказаться от Farseer и бросить свою собственную физику на основе плиток.
источник
Вы можете оптимизировать свои формы столкновений, эта сцена может быть сделана только с четырьмя прямоугольниками.
Вы можете присоединиться к соответствующим ячейкам, чтобы увеличить их.
это видео показывает это http://www.youtube.com/watch?v=eyhGckHgkkE
когда он добавляет поля, вы можете видеть светло-голубой прямоугольник с оптимизированной формой.
источник
Хм ... Я подозреваю, что это может иметь какое-то отношение к вашему кругу, а не к плиткам под ним. Попробуйте сделать землю, используя один корпус, и посмотрите, получите ли вы те же результаты. Если нет, это плитки, как вы подозреваете. Если это так, ваш круг не такой круглый, как вы могли бы подумать.
источник