Есть ли способ заставить кинематическое жесткое тело, которое уже движется, следовать положению другого некинематического твердого тела?

#c# #unity3d #rigid-bodies

Вопрос:

В настоящее время пытаюсь создать очень простую систему стабилизации для тряпичной куклы с использованием перевернутого маятника. По сути, я могу заставить маятник следовать за рэгдоллом игроков только в том случае, если он не использует Mathf.Функция PingPong, которая является тем, как функционирует маятник. Он функционирует, перемещая основание маятника вверх и вниз очень быстро, что удерживает вес маятника в центре, если только вес тела игрока не выводит его из равновесия. В следующем коде я пытаюсь получить позицию сборного элемента player и заставить _base следовать этой позиции, но в то же время он выполняет пинг-понг и присваивает себе ту же позицию, перезаписывая начальное движение.

Как бы я мог заставить _base Rigidbody следовать за Rigidbody, который я прикрепил к родительскому объекту в сборке, одновременно выполняя его функцию pingpong?

Вот мой код:

 using UnityEngine;
 
public class Pendulum : MonoBehaviour
{
    [SerializeField]
    public Rigidbody _base;
    public Rigidbody _player;
 
    [Space]
    [SerializeField]
    public float _speed = 200;
 
    public Vector3 pointA;
    public Vector3 pointB;
   
 
    void Start()
    {
        _base = GetComponent<Rigidbody>();
        pointA = new Vector3(0, .2f, 0);
        pointB = new Vector3(0, .5f, 0);
    }
 
    void FixedUpdate()
    {
        _base.MovePosition(_TestStabliziedPlayer.position);
        float time = Mathf.PingPong(Time.time * _speed, 1);
        transform.position = Vector3.Lerp(pointA, pointB, time);
    }
}
 

Ответ №1:

Я предлагаю использовать Hinge Joint для соединения двух жестких тел в виде цепочки, вы можете посмотреть документацию unity о шарнирном соединении здесь: Документация Unity

Вы можете использовать этот учебник для своего проекта, я думаю, он будет очень полезен

Ссылка на учебник

Комментарии:

1. Я должен был уточнить, что я уже пробовал использовать шарниры, но, возможно, я неправильно использовал шарнирное соединение. Я изучу это и посмотрю, так ли это, иначе у меня все еще может возникнуть проблема

2. : v если у вас возникли проблемы с шарнирным соединением, просто прокомментируйте ниже, я вам помогу

3. Я не думаю, что суставы работают для кинематических жестких тел… @NawtZach действительно ли жесткое тело должно оставаться кинематическим? Как только вы прикрепите соединение, вы также можете сделать его некинематическим

4. @derHugo Я попытался это сделать, но это заставляет основание маятника вращаться, и когда я фиксирую его ось вращения, это полностью разрушает систему. Стабилизация маятника работает только тогда, когда основание маятника кинематическое.