1

実際にドラッグしているゲームオブジェクトに問題があり、作成する必要があるいくつかの関数が原因でボックスコライダーがトリガーされます。問題は、このゲームオブジェクトが衝突している別のゲームオブジェクトを超えて移動するのをブロックする方法がわからないことです。

//This is my object drag, might help.. it's a .cs code attached to the game object
void OnMouseDrag()
{
    Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
    Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
    if (Global.noGrid[0]) //noGrid means inside the grid ('no' in Portuguese means 'in')
    {
        transform.position = Global.FindClosestObject(curPosition, "gizmo_peca").transform.position; // here i find the game closest gameobject inside the grid, i do that because i need a snap (that's why i need the trigger working to, to recognize which gameobject it's colliding
    }
    else
    {
        transform.position = new Vector3(curPosition.x, curPosition.y, curPosition.z);
    }

}

// This is what i tried but with no success in BlockForma.cs (It's how I call my gameobject above)
void OnTriggerEnter2D(Collider2D c)
{

    if (c.tag == "Forma")
    {
        c.rigidbody2D.velocity = new Vector2(0,0);
        Debug.Log("Hello");
    }
}
4

1 に答える 1

1

このソリューションはテスト済みで、100% 動作します。

ゲームオブジェクトを停止したい場合は、

rigidbody2D.velocity = Vector2.zero; 

オブジェクトの衝突を止めたい場合は、

col.rigidbody2D.velocity = Vector2.zero;
于 2015-02-04T07:43:54.133 に答える