Unity3d:与对象碰撞并更新其变换,然后丢失所有刚体属性并通过对象

时间:2017-07-28 11:52:42

标签: unity3d collision rigid-bodies

 private void Start()
{
    connected = false;
}

private void OnCollisionEnter(Collision collision)
{
    if (collision.transform.tag == "Player")
    {
        dronePlayer = collision;

        offset = dronePlayer.transform.position - gameObject.transform.position;

        connected = true;
    }   
}

private void Update()
{
    if (connected)
    {
        transform.position = dronePlayer.transform.position - offset;
    }
}

简单地说,我想做的就是在碰撞后从另一个物体中拾取一个物体然后四处移动。所以脚本只是改变了我用变换命中的对象的变换。

这里的问题是所有工作正常,除非我接近场景中的另一个对象。刚体的定律被忽略,并通过它通常会碰到的其他物体。

2 个答案:

答案 0 :(得分:1)

这是因为你迫使它的位置相对于它“被卡住”的物体处于一个特定的位置:它不再是由物理引擎控制的刚体。它坚持的对象不知道它不能继续前进,这样做,并导致相互渗透。

您需要将此对象的碰撞体积添加到控制对象的层次结构中,以便物理引擎 了解它。

答案 1 :(得分:0)

我也和一些朋友进行过对话,你说的是对的,它忽略了物理引擎。

某人表示使用哪种作品令人难以置信。

        gameObject.AddComponent<FixedJoint>();
        gameObject.GetComponent<FixedJoint>().connectedBody = collision.rigidbody;