0
using UnityEngine;
public class Rope : MonoBehaviour
{
public GameObject hook;
public GameObject linkEnd;
public GameObject linkPrefab;
public int links;
public float range;
public float maxRange;
public float dist;
void Start()
{
GenerateRope();
}
private void Update()
{
GetRange();
}
private void GenerateRope()
{
Rigidbody2D previousRB = hook.GetComponent<Rigidbody2D>();
for (int i = 0; i < links; i++)
{
GameObject link = Instantiate(linkPrefab, transform);
HingeJoint2D Hinge = link.GetComponent<HingeJoint2D>();
DistanceJoint2D Distance = link.GetComponent<DistanceJoint2D>();
Hinge.connectedBody = previousRB;
Distance.connectedBody = previousRB;
Hinge.autoConfigureConnectedAnchor = false;
Hinge.connectedAnchor = new Vector2(0f, -0.1f);
if (i < links -1)
{
previousRB = link.GetComponent<Rigidbody2D>();
}
else
{
linkEnd.GetComponent<LinkEnd>().ConnectLinkEnd(link.GetComponent<Rigidbody2D>());
}
}
}
private float GetRange()
{
return range = Mathf.Round(Vector2.Distance(hook.transform.position, linkEnd.transform.position));
}
}
是一个gameobject实例化一系列链节,使用铰链连接和距离连接形成不同长度的链。获取连接关节的长度
我试图得到这个链的长度,当它被实例化,但有困难的时候如此。此外,这些链接是现在的占位符,因此它们的大小可能在将来会有所不同,因此在数学上获得启动长度是非常必要的。
我的猜测是要找到每个距离关节的锚位置和连接的锚位,并利用它们来计算这一点,但我坚持......
任何建议或指南将帮助! 谢谢!
感谢您的善意阐述! @Wayland Yutani 但是,我之前做过这件事,而我得到的却是完全不同的数字输出。简单地说:如果有10个链接的距离为1f,那么我得到的CalculateLength()是43f,其中从GetRange()开始到结束得到Vector2.Dsitance的范围为33f。 –
来自GetRange()的'range'值更可能更接近我想要的值。然而,由于它是实时计算,并且它与实例化的开始到挂起的完成都不同,所以我自己也无法完成正确的事情。 –