Шарнирный шарнир 2D перестает работать должным образом после сброса игры - PullRequest
0 голосов
/ 21 июня 2019

У меня возникли проблемы с простым hingejoint2d, который состоит из простой цепочки с прикрепленной к нему коробкой.Работает нормально до перезапуска игры, когда при перезапуске игры падают коробки с цепочки, но цепочки продолжают на месте.Я понятия не имею, что вызвало это.вот код для сброса объектов.

    private Quaternion startRot;
    private Vector3 startLocalScale;
    private Rigidbody2D rb;
    private HingeJoint2D hj;
    // Start is called before the first frame update
    void Start()
    {
        startPos = transform.position;
        startRot = transform.rotation;
        startLocalScale = transform.localScale;
        hj = GetComponent<HingeJoint2D>();
        if (GetComponent<Rigidbody2D>() != null)
        {
            rb = GetComponent<Rigidbody2D>();
        }
    }

    // Update is called once per frame
    void Update()
    {

    }
    public void ResetObjects()
    {
        transform.position = startPos;
        transform.rotation = startRot;
        transform.localScale = startLocalScale;
        if (hj != null)
            return;


        if (rb != null)
        {
            rb.velocity = Vector3.zero;
        }

    }```

1 Ответ

0 голосов
/ 21 июня 2019

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

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

enter image description here

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

using UnityEngine;

    public class Example : MonoBehaviour
    {
        void Start()
        {
            // Set the hinge limits for a door.
            HingeJoint hinge = GetComponent<HingeJoint>();

            JointLimits limits = hinge.limits;
            limits.min = 0;
            limits.bounciness = 0;
            limits.bounceMinVelocity = 0;
            limits.max = 90;
            hinge.limits = limits;
            hinge.useLimits = true;
        }
    }

источник: https://docs.unity3d.com/ScriptReference/HingeJoint-limits.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...