Sprawdzenie czy element koliduje z innym elementem

0

Witam, mam kod który sprawdza czy element koliduje z elementem obok, lecz chciałbym żeby sprawdzał czy element obok koliduje z innym elementem itd. Po prostu zależy mi na tym żeby elementy ściany nie lewitowały i zawalały się gdy nie dotykają innych elementów ściany. Próbowałem użyć do tego tablic ale niestety nie podołałem zadaniu.
Mój kod:

    private void ray(){
        int layerMask = 1 << 8;
        layerMask = ~layerMask;

        RaycastHit down;
        RaycastHit right;
        RaycastHit left;
        RaycastHit up;

            Debug.DrawRay(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.down), Color.red);
            Debug.DrawRay(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.right), Color.yellow);
            Debug.DrawRay(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.left), Color.blue);

        if ((Physics.Raycast(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.down), out down, Mathf.Infinity, layerMask) && down.distance < 0.26f) || 
        (Physics.Raycast(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.right), out right, Mathf.Infinity, layerMask) && right.distance < 0.26f) || 
        (Physics.Raycast(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.up), out up, Mathf.Infinity, layerMask) && up.distance < 0.26f) ||
        (Physics.Raycast(GetComponent< Renderer>().bounds.center, transform.TransformDirection(Vector3.left), out left, Mathf.Infinity, layerMask) && left.distance < 0.26f))
                {
                    destroyed = false; 
                }
                else{
                    destroyed = true;
                    GetComponent<Rigidbody>().constraints = RigidbodyConstraints.None;  
                }

            }
        }   
0

A box collidery i rigidbody nie zalatwia sprawy? Mozesz w rigidbody zablokowac rotacje i przemieszczanie w kierunkach ktorych nie chcesz wiec scianka Ci sie nie zawali.
A wtedy raycast sprawdza tylko prawo i lewo lub uzyc jointow ktore sie dezaktywuja On Hit.

0

@gebaftw: Sposób z jointami może być dobry ale to jest 400 elementów i łączenie każdego ze sobą po kilka razy może trochę zająć

0

Cieżko mi powiedziec jak to wyglada, jak spawnujesz te obiekty. Raczej recznie bym tego nie robil.
Mozesz stworzyc loop ktory Ci spawnuje te obiekty i przy okazji je laczy ze soba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1