|
|
|||||
Цитата:
Ну тогда нужно определить в проекте константу - минимальная ширина объекта, и спустить все просчёты до промежутков, приблизительно равных этой константе, чтобы не дай бог объект не смог пролететь сквозь другой. (А спускать с помощью, к примеру, циклов) При этом учитывать скорость вращения
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 05.02.2015 в 21:48. |
|
|||||
Lorem ipsum
|
Ну вот об этом и речь, что так движок и захлебнуться может. Нужно постоянно оптимизировать (и на уровне алгоритмов, и на уровне математики), упрощать, а местами и просто халтурить =) как правило просто в зависимости от скоростей в каждой конкретной сцене можно задавать количество промежуточных шагов (вроде бы так в B2D делается) или на объекте выставить флаг, означающий, что он движется очень быстро (как в Nape).
Ну т.е. решения есть, да. И ты их обнаружишь, если займешься этим вопросом вплотную. Вот только это все действительно уже неплохо сделано до тебя (еще и выбор есть), а делать там ой как немало! И вот я подведу итог, чтобы стало ясно, к чему я все время веду. Когда-то, когда AIR был достаточно туповат, а Starling едва справлялся с нормальной игровой сценой на слабом смартфоне, я решил замутить свой 2D движок на Stage3D. Пока я факультативно занимался этим делом, я неплохо так разобрался с рядом процессов до самого-самого низкого уровня. Как ты уже понял, движок свой я так и не закончил, бо с течением времени в этом просто отпала какая-либо необходимость — Starling сейчас неплохо гребет на любой платформе и я пока ни разу не уперся в его "предел". НО. Знания и понимание процессов мне пошли очень на пользу. Стало понятно, почему изменить масштаб в разы быстрее, чем задать новую ширину, почему не надо без повода дергать getBounds(), какая порой драматическая разница между добавить/удалить объект или сделать его видимым/невидимым и т.д. ИТОГО: В начале обсуждения ты сказал, что желаешь сам писать физику. Именно может оказаться излишеством, если тебе кроме этого есть что сотворить. Но знания, которые ты приобретешь даже просто размышляя о том, как оно должно работать, тебе однозначно помогут. Ну и математику/физику подтянешь.
__________________
Поймай яблоко 2! |
|
|||||
Вообще обычно телам просто дается сферический (3D) или эллиптический (2D) коллайдер. Коллайдер - воображаемый объект, привязанный к центру физического тела. Для начала проверяются пересечения коллайдеров, а затем уже, если коллайдеры пересеклись - пересечение тел.
Для эллиптических (в самом простом случае - круглых) коллайдеров расчет пересечения не требует даже вычислять квадратный корень, что делает предварительную проверку достаточно быстрой. В примере Zebestov'а эллиптический коллайдер показал бы пересечение с обоими окружностями, а вот уже дальнейший расчет показал бы с кем именно мы пересеклись и когда.
__________________
...вселенская грусть |
Часовой пояс GMT +4, время: 04:52. |
|
« Предыдущая тема | Следующая тема » |
|
|