【问题标题】:Programmatically attach two objects with a hinge joint以编程方式使用铰链连接两个对象
【发布时间】:2018-01-04 18:30:40
【问题描述】:

我有一个球,它连接在一根杆的底部,带有一个来回摆动的铰链接头。铰链接头在球上并连接到杆上。当我点击屏幕时,球上的铰链关节被破坏,并且根据球的位置,它会使用内置的物理原理将其抛出。

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

我可以很好地破坏铰链。如何将它重新附加到它碰撞的对象上?我有以下内容:

附上球:

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 圆形对撞机。它发生了碰撞,但是当它发生碰撞时,它将球锁定在适当的位置。我希望它附着在它碰撞过的杆上并与之摆动。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    想通了。

    我原本在绳子上的脚本,但我把它移到了球上。

    然后我找到带有“玩家”标签的游戏​​对象,将铰链重新连接到球上。

    然后我定义了我碰撞的对象并将其放置在游戏对象“绳索”中。

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

    将其设置为 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);
    
        }
    
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 2022-10-15
      • 1970-01-01
      相关资源
      最近更新 更多