为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕码人2483693 2023-04-29 16:34:21
我在使用一个简单的 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 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您不应该直接访问对象变换,如果您使用的是刚体,请让刚体组件完成工作!否则事情往往会变得有点混乱。

我今天遇到了这个问题,我使用关节限制来解决这个问题。

//img3.sycdn.imooc.com/644cd6a500015cb806370286.jpg

启用使用限制。然后您可以根据需要编辑约束。


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;

        }

    }

查看完整回答
反对 回复 2023-04-29
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信