示例#1
0
    void PlaceTile(Transform parent, Vector3Int pos, Vector3Int minPos, Vector3Int maxPos)
    {
        //Only place a tile if it is on the edge
        bool isNegX = negativeX != 0 && pos.x == minPos.x;
        bool isPosX = positiveX != 0 && pos.x == maxPos.x;
        bool isNegY = negativeY != 0 && pos.y == minPos.y;
        bool isPosY = positiveY != 0 && pos.y == maxPos.y;
        bool isNegZ = negativeZ != 0 && pos.z == minPos.z;
        bool isPosZ = positiveZ != 0 && pos.z == maxPos.z;

        //Fully enclosed tile, don't waste resources on a hitbox
        if (!isNegX && !isNegY && !isNegZ && !isPosX && !isPosY && !isPosZ)
        {
            return;
        }
        GameObject tilePrefab = Resources.Load <GameObject>("Tile");
        GameObject tile       = Instantiate(tilePrefab, pos, Quaternion.identity, parent);
        TileInput  tileInput  = tile.GetComponent <TileInput>();

        //Default edges that exist to high cover, user can change this on a per instance basis if wrong
        tileInput.negativeX = isNegX ? negativeX : (byte)0;
        tileInput.positiveX = isPosX ? positiveX : (byte)0;
        tileInput.negativeY = isNegY ? negativeY : (byte)0;
        tileInput.positiveY = isPosY ? positiveY : (byte)0;
        tileInput.negativeZ = isNegZ ? negativeZ : (byte)0;
        tileInput.positiveZ = isPosZ ? positiveZ : (byte)0;
        tileInput.UpdateFaces();
    }