Итак, у меня есть некоторые тела (которые я могу создавать все больше и больше во время выполнения), и мне нужно, чтобы они были намагничены к центру экрана.Пусть это будет (480/2 / WORLD_SCALE, 320/2 / WORLD_SCALE) в мировом пространстве.Я новичок в box2d, так что, возможно, есть простой способ добиться этого, но я пытаюсь сделать это следующим образом:
- Я вычитаю положение каждого тела и центральную позицию экрана - чтобы получить направление ккуда мне нужно переместить мое тело.
- Нормализовать вектор направления (который я нашел на стр.1)
- Умножить этот нормализованный вектор на мое значение силы тяжести
- Добавьте вектор (который я получил на стр. 3) к текущей скорости тела
Итак, после этого я получаю то, что хочу - тела намагничиваются к центру экрана, я также добавляюнекоторые трения и демпфирования, чтобы тела могли остановиться.Но, как я полагаю, из-за того, что мой гравитационный вектор имеет постоянную длину - я не могу заставить тела полностью перестать двигаться.Он всегда пытается переместиться в центр экрана, и наименьшая возможная для него скорость - это длина этого вектора гравитации.
Если бы у меня было только одно тело, я бы не выполнил шаги 2,3, когда телоближе к центру экрана, чем размер гравитации.Но я не могу связать положение тела с центром магнитного поля, потому что эти два тела никогда не будут занимать точно среднее место на экране, поскольку они будут сталкиваться друг с другом.Поэтому я не могу сделать свой гравитационный вектор переменным, и игра с любыми трениями не поможет, может быть, поможет какой-то пошаговый взлом, но я думаю, что мне нужно реализовать какую-то подпрыгивающую противодействующую силу или что-то в этом роде.
Я новичок в box2d и не очень хорошо разбираюсь в физике.
Что также может быть важно, так это то, что я установил скорость тела с помощью метода SetLinearVelocity.
Может быть, яЯ просто что-то упустил, может быть, есть какой-то родной способ для box2d добиться этого.Любая помощь приветствуется.