Объект Unity перемещается, когда применяется AddForceAtPosition, когда он должен только вращаться - PullRequest
0 голосов
/ 18 мая 2018

У меня есть игровой объект в единстве, я бы хотел сместить вектор с некоторыми силами.В данный момент я пытаюсь добавить некоторые реалистичные силы вращения, следовательно, используя AddForceAtPosition, используя смещение от центра масс твердого тела.Тем не менее, когда я запускаю игру, объект начинает немного двигаться в дополнение к вращению.Других сил нет, а сопротивления нет.

rb.AddForceAtPosition(transform.TransformDirection(Vector3.up * 5), transform.position + transform.TransformDirection(mainThrustPt)); 

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Функция Rigidbody.AddForceAtPosition применяет к объекту крутящий момент и усилие .это означает, что Объект будет вращаться и перемещаться одновременно.

Если вы просто хотите применить вращательную силу, которая не перемещает Объект, используйте Rigidbody.AddTorque или Rigidbody.AddRelativeTorque, которая будет применять только вращательную силу к Объекту.

Вытакже может освободить положение твердого тела x, y, z, если вы не хотите, чтобы оно двигалось, но поведение объекта при этом иногда будет странным.

enter image description here

Тем не менее, когда я запускаю игру, объект начинает слегка двигаться в дополнение к вращению.

Если объект движется без добавления силы к нему или без использованияAddForceAtPosition, тогда притяжение притягивает его.Отключите «Использовать гравитацию», как я делал на изображении выше.

0 голосов
/ 18 мая 2018

Используйте AddTorque, если вам нужно вращение.

0 голосов
/ 18 мая 2018

Если вы нажмете на шарик, связанный веревкой, вы можете ожидать, что он будет качаться и вращаться.Попробуйте использовать это перед применением силы:

rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...