Ejemplo n.º 1
0
    private void CreateWall(Facing.Direction a_direction)
    {
        var wallCollider = Instantiate(m_wallColliderPrefab);

        var thickness = WallSize;
        var collider  = wallCollider.GetComponent <BoxCollider2D>();

        collider.size = new Vector2(Size.x, Mathf.Abs(thickness)) + Vector2.left * 2.0f * WallSize;

        wallCollider.transform.parent = m_wallContainer.transform;
        wallCollider.name             = a_direction + " Wall";
        wallCollider.transform.Rotate(Vector3.forward, Facing.DirectionToRotation(a_direction));

        wallCollider.transform.localPosition = GetWallCenter(a_direction, true);

        wallCollider.gameObject.isStatic = true;

        if (m_wallRendererPrefab != null)
        {
            var wallSpriteRenderer = Instantiate(m_wallRendererPrefab).GetComponent <SpriteRenderer>();
            wallSpriteRenderer.name                = a_direction + " Wall Renderer";
            wallSpriteRenderer.transform.parent    = wallCollider.transform;
            wallSpriteRenderer.transform.rotation  = wallCollider.transform.rotation;
            wallSpriteRenderer.gameObject.isStatic = true;
            if (wallSpriteRenderer != null)
            {
                if (wallSpriteRenderer.drawMode == SpriteDrawMode.Simple)
                {
                    wallSpriteRenderer.drawMode = SpriteDrawMode.Tiled;
                }

                wallSpriteRenderer.size = collider.size;
            }
            wallSpriteRenderer.transform.position = wallCollider.transform.position;
        }

        var wall = wallCollider.gameObject.AddComponent <Wall>();

        wall.Direction = a_direction;
    }