我在使用一个简单的 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个赞
您不应该直接访问对象变换,如果您使用的是刚体,请让刚体组件完成工作!否则事情往往会变得有点混乱。
我今天遇到了这个问题,我使用关节限制来解决这个问题。
启用使用限制。然后您可以根据需要编辑约束。
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;
}
}
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消