[英]Unity, 2d, Joints not forming properly through script
當我運行一個場景時,腳本會檢查 object 的四個方向,如果范圍內還有另一個 object,它們應該相互形成關節。 它應該在四個方向上對每個適用的 object 執行此操作。 但是,當一個 object 在范圍內有多個 object 時,它只與其中一個連接。 它確實創建了正確數量的關節,但只有一個分配了它的目標游戲 object。
每個方向的腳本基本相同,在我的測試中它不僅在一個方向失敗,所以我在這里只發布了一個方向腳本。
雖然我確實想知道這是否與一般的統一行為有更多關系?
[SerializeField]
private Transform eastPosition;
[SerializeField]
private Transform westPosition;
[SerializeField]
private Transform northPosition;
[SerializeField]
private Transform southPosition;
float baseCastDistance = 0.2f;
private void Start()
{
CastEast();
CastNorth();
CastWest();
CastSouth();
}
void CastEast()
{
float castDistance = baseCastDistance;
Vector3 targetPosition = eastPosition.position;
targetPosition.x += castDistance;
Debug.DrawLine(eastPosition.position, targetPosition, Color.cyan, 1000f);
RaycastHit2D hit = (Physics2D.Linecast(eastPosition.position, targetPosition, 1 << LayerMask.NameToLayer("Blocks")));
if (hit)
{
print("Item in the way: " + hit.rigidbody.gameObject.name);
gameObject.AddComponent<FixedJoint2D>();
gameObject.GetComponent<FixedJoint2D>().connectedBody = hit.rigidbody;
}
}
設法自己解決它,在創建關節時我同時存儲它們,並使用它:
void CastEast()
{
float castDistance = baseCastDistance;
Vector3 targetPosition = eastPosition.position;
targetPosition.x += castDistance;
Debug.DrawLine(eastPosition.position, targetPosition, Color.cyan, 1000f);
RaycastHit2D hit = (Physics2D.Linecast(eastPosition.position, targetPosition, 1 << LayerMask.NameToLayer("Blocks")));
if (hit)
{
print("Item in the way: " + hit.rigidbody.gameObject.name);
Joint2D eastJoint = gameObject.AddComponent<FixedJoint2D>();
eastJoint.connectedBody = hit.rigidbody;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.