public static bool clearRay(Being user, Tile start, Tile end, TileSet mask, bool lastSpaceFree) { var cols = Physics2D.LinecastAll(new Vector2(start.getX(), start.getY()), new Vector2(end.getX(), end.getY())); List <Collider2D> colList = new List <Collider2D>(); foreach (var item in cols) { if (Vector3.Distance(item.collider.gameObject.transform.position, new Vector3(start.getX(), start.getY())) < .3f) { //we don't care! } else { if (!lastSpaceFree && Vector3.Distance(item.collider.gameObject.transform.position, new Vector3(end.getX(), end.getY())) < .3f) { continue; } canCollide b = null; if (item.collider.gameObject.TryGetComponent <canCollide>(out b)) { switch (b.getSubType()) { case CollidableType.BEING: Being a = (Being)b.getSub(); Side s = a.getSide(); if (user.getSide() == s && mask.blockedByAllies) { colList.Add(item.collider); } else { if (mask.blockedByEnemies) { colList.Add(item.collider); } } break; case CollidableType.WALL: if (mask.blockedByWalls) { colList.Add(item.collider); } break; } } } } Debug.Log("Count: " + colList.Count); return(!(colList.Count > 0)); }
public Thing(canCollide s, Tile t, CollidableType ty) { sub = s; setTile(t); subType = ty; }