Hi, I am having some problems working with Layermasks. I want to create a Layermask which only interacts with the Layer of the gameobject and another Layer which is always 4 Layers below the gameobject Layer. However I can´t use specific Layer numbers since my gameobject has to switch Layers all the time. Would love if someone can help me out. Code (CSharp): bool CollisionCheck(Vector2 v2StartOffSet, Vector2 v2EndOffSet) { //This is the part I can´t figure out int iWorldLayer = gameObject.layer - 4; //Currently Layer: 11 int iPlayerLayer = gameObject.layer; //Currently Layer: 15 int iTargetLayer = iWorldLayer | iPlayerLayer; LayerMask lmTargetLayer = 1 << iTargetLayer; Vector2 v2LineStart = (Vector2)gameObject.transform.position + v2BoxColliderCenter + v2StartOffSet; Vector2 v2LineEnd = (Vector2)gameObject.transform.position + v2BoxColliderCenter + v2EndOffSet; if(bRenderRaysInEditor == true) { Debug.DrawLine(v2LineStart, v2LineEnd, Color.blue); } RaycastHit2D Hit; Hit = Physics2D.Linecast(v2LineStart, v2LineEnd, lmTargetLayer); return Hit; }
Close Code (CSharp): LayerMask A = 1<< worldLayer LayerMask B = 1<<playerLayer layermask Both = A | B