我遇到一个简单的铰链连接2d麻烦,该铰链连接在一个简单的链条上,并附有一个盒子。在重新启动游戏之前,它工作正常,当游戏重新启动时,盒子从链条上掉下来,但链条继续在原处。我不知道是什么原因造成的。这是重置对象的代码。
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;
}
}```
答案 0 :(得分:0)
您不应该直接访问对象变换,如果您使用的是刚体,则让刚体组件完成工作!否则情况会变得有些混乱。
我今天遇到了这个问题,我使用关节的限制来解决这个问题。
启用使用限制。然后,您可以根据需要编辑约束。
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