我有一个球附着在杆的底部,铰链接头来回摆动。铰链接头位于球上并连接到杆上。当我点击屏幕时,球上的铰链被破坏,并且根据球的位置将使用内置物理投掷它。
我想与另一个摆动杆碰撞并用铰链连接到它上面。所以基本上是一个挥杆的比赛,你可以从一个球到另一个球。
我可以摧毁铰链接头就好了。如何将其重新连接到与其碰撞的对象?我有以下内容:
附球:
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的圆形对撞机。它有一个碰撞,但是当它发生碰撞时,它将球锁定到位。我希望它能附着在与它相撞并与它一起摆动的杆上。
答案 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);
}
}
}