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'值更可能更接近我想要的值。然而,由於它是實時計算,並且它與實例化的開始到掛起的完成都不同,所以我自己也無法完成正確的事情。 –