游戏重置时,Hinge Joint 2D 停止正常工作

我在使用一个简单的 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;

        }


    }```


慕码人2483693
浏览 115回答 1
1回答

Qyouu

您不应该直接访问对象变换,如果您使用的是刚体,请让刚体组件完成工作!否则事情往往会变得有点混乱。我今天遇到了这个问题,我使用关节限制来解决这个问题。启用使用限制。然后您可以根据需要编辑约束。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;        }    }
打开App,查看更多内容
随时随地看视频慕课网APP