以编程方式使用铰链连接附加两个对象

时间:2015-07-31 07:10:14

标签: unity3d

我有一个球附着在杆的底部,铰链接头来回摆动。铰链接头位于球上并连接到杆上。当我点击屏幕时,球上的铰链被破坏,并且根据球的位置将使用内置物理投掷它。

我想与另一个摆动杆碰撞并用铰链连接到它上面。所以基本上是一个挥杆的比赛,你可以从一个球到另一个球。

我可以摧毁铰链接头就好了。如何将其重新连接到与其碰撞的对象?我有以下内容:

附球:

using UnityEngine;
using System.Collections;

public class attachBall : MonoBehaviour {

    public GameObject player;

    void OnTriggerEnter2D(Collider2D collider) {
        if (collider.tag == "Player")
        {
            print ("COLLISION DETECTED!");
            player.AddComponent<HingeJoint2D>();
        }
    }

}

释放球:

using UnityEngine;
using System.Collections;

public class releaseBall : MonoBehaviour {

    public GameObject player;

    void Update(){
        if (Input.GetMouseButtonDown (0)) {
            Destroy(player.GetComponent("HingeJoint2D"));
        }
    }
}

我在球和杆上碰了一个2d的圆形对撞机。它有一个碰撞,但是当它发生碰撞时,它将球锁定到位。我希望它能附着在与它相撞并与它一起摆动的杆上。

1 个答案:

答案 0 :(得分:1)

想出来。

我最初把绳子放在绳子上,但我把它移到了球上。

然后我找到带有标签的游戏​​对象&#34; Player&#34;将铰链接头重新连接到球上。

然后我定义了与之碰撞的对象并将其放置在GameObject&#34; rope&#34;中。

然后我必须定义我添加的铰链和已经连接到绳索的刚体。

将其设置为connectedBody后,我将连接的锚移动到绳子的末端。

瞧。球在绳子上摇摆。

using UnityEngine;
using System.Collections;

public class attachBall : MonoBehaviour {

public GameObject player;
public GameObject rope;
public HingeJoint2D hinge;
public Rigidbody2D rb;
public bool attached = false;

void OnTriggerEnter2D(Collider2D collider) {

    if (collider.tag == "rope" && !attached) 
    {
        Debug.Log ("collision");
        attached = true;
        player = GameObject.FindGameObjectWithTag ("Player");
        player.AddComponent<HingeJoint2D> ();
        rope = collider.gameObject;
        hinge = player.GetComponent<HingeJoint2D>();
        rb = rope.GetComponent<Rigidbody2D>();
        hinge.connectedBody = rb;
        hinge.connectedAnchor = new Vector2(0,-2.5f);

    }

}

}