Если вы хотите найти тело, находящееся ниже мыши / заданной точки, вы можете использовать
Matter.Query.point
документы.
Если выхочу, чтобы Body hover:
Я однажды создал эффект наведения с помощью Box2d, но я думаю, что это может быть сделано так же, как в деле .js.Просто взгляните на рисунок ниже.
^
| <-- Force opposite to gravity
+---|---+
| + | <-- Box/player/body
+-+-+-+-+
| | | | | <-- Rays
| | |
----+----- <-- Ground to hover on
|
Чтобы тело зависло, вам нужно приложить к нему силу, противоположную гравитации.Поэтому вам необходимо выяснить, насколько сильной должна быть эта сила, которая должна быть равна нулю, если тело находится выше высоты для зависания и должно становиться сильнее по мере приближения тела к земле.
Чтобы получить эту информациюВы можете использовать лучевое излучение и отправить один или несколько лучей от тела к земле (противоположно гравитации).В случае, если луч (ы) пересекаются с полом / землей для зависания, вы можете рассчитать длину от тела до пересечения.Если длина больше высоты для зависания, сила может быть установлена на ноль, если она равна или меньше, вы можете масштабировать силу в некоторой инвертированной пропорции к длине, чтобы она была сильной, когда тело низкое.Точный метод / функция зависит от эффекта, которого вы пытаетесь достичь.
Когда я это сделал, я рассчитал около 10 лучей и использовал среднее из них, так что тело смогло «подняться» *
Вы можете посмотреть здесь , где я искал помощи, когда я сделал это.
Здесь является отличным учебником об этом, к сожалению, в Box2d,но физика сама по себе не должна быть другой.