コード例 #1
0
    public Vector3 GetScreenPosition(PositionSpace positionSpace)
    {
        switch (positionSpace)
        {
        case PositionSpace.BotMid: return(posiScreen.botMid);

        case PositionSpace.BotLeft: return(posiScreen.botLeft);

        case PositionSpace.BotRight: return(posiScreen.botRight);

        case PositionSpace.MidLeft: return(posiScreen.botLeft);

        case PositionSpace.MidRight: return(posiScreen.midRight);

        case PositionSpace.MidMid: return(posiScreen.midMid);

        case PositionSpace.TopLeft: return(posiScreen.topLeft);

        case PositionSpace.TopMid: return(posiScreen.topMid);

        case PositionSpace.TopRight: return(posiScreen.topRight);

        default: return(Vector3.zero);
        }
    }
コード例 #2
0
    internal static Vector3 GetRandomPosition(this BoxCollider2D self, PositionSpace space = PositionSpace.World)
    {
        Vector3 pos = (space == PositionSpace.Local) ?
                      self.transform.localPosition
                                        : self.transform.position;

        pos += (Vector3)self.offset + new Vector3(RandomFloat.Range(-self.size.x, self.size.x) / 2, RandomFloat.Range(-self.size.y, self.size.y) / 2, 0);

        return(pos);
    }
コード例 #3
0
    internal static Vector3 GetRandomPosition(this CircleCollider2D self, PositionSpace space = PositionSpace.World)
    {
        Vector3 pos = (space == PositionSpace.Local) ?
                      self.transform.localPosition
                                        : self.transform.position;

        Vector3 point = new Vector3(RandomFloat.Range(-self.radius, self.radius), 0, 0);

        point = point.RotateZ(RandomFloat.Range(0, 360));

        pos += (Vector3)self.offset + point;

        return(pos);
    }
コード例 #4
0
        public static Vector2 V3ToV2(Vector3 v3, PositionSpace positionSpace)
        {
            switch (positionSpace)
            {
            case PositionSpace.xy:
                return(new Vector2(v3.x, v3.y));

            case PositionSpace.xz:
                return(new Vector2(v3.x, v3.z));

            case PositionSpace.yz:
                return(new Vector2(v3.y, v3.z));
            }
            return(Vector2.zero);
        }
コード例 #5
0
        public Grid2D(int width, int height, float gridSize, Vector3 originPos, PositionSpace positionSpace, Transform parent) : base(width, height, gridSize, originPos, positionSpace)
        {
            grid     = new TGridObject[Width, Height];
            gridText = new TextMeshPro[Width, Height];

            for (int horizontal = 0; horizontal < Width; ++horizontal)
            {
                for (int vertical = 0; vertical < Height; ++vertical)
                {
                    grid[horizontal, vertical]     = default;
                    gridText[horizontal, vertical] = UtilityClass.CreateWorldText(grid[horizontal, vertical].ToString(), Color.white, parent, GridToWorldPos(horizontal, vertical) + this.gridSize * .5f, 10, TextAlignmentOptions.Center, 0);
                    Debug.DrawLine(GridToWorldPos(horizontal, vertical), GridToWorldPos(horizontal + 1, vertical), Color.white, 100f);
                    Debug.DrawLine(GridToWorldPos(horizontal, vertical), GridToWorldPos(horizontal, vertical + 1), Color.white, 100f);
                }
            }

            Debug.DrawLine(GridToWorldPos(0, Height), GridToWorldPos(Width, Height), Color.white, 100f);
            Debug.DrawLine(GridToWorldPos(Width, 0), GridToWorldPos(Width, Height), Color.white, 100f);
        }
コード例 #6
0
        //Width = radius
        //Height = angleSecPerRadiusSec
        //gridSize = radiusSize
        public RadialGrid2D(int radiusSec, int angleSecPerRadiusSec, float radiusSize, Vector3 originPos, PositionSpace positionSpace, Transform parent) : base(radiusSec, angleSecPerRadiusSec, radiusSize, originPos, positionSpace)
        {
            int total = 1;

            for (int i = 1; i < Width; i++)
            {
                total += i * Height;
            }

            grid     = new TGridObject[total];
            gridText = new TextMeshPro[total];

            for (int currRadiusSec = 0; currRadiusSec < Width; ++currRadiusSec)
            {
                int numOfSec = currRadiusSec == 0 ? 1 : currRadiusSec * Height;

                int startOfSec = SectionToIndex(currRadiusSec, 1);

                for (int currAngleSec = 0; currAngleSec < numOfSec; ++currAngleSec)
                {
                    int index = startOfSec + currAngleSec;
                    grid[index] = default;
                    Vector3 gridPos = currRadiusSec == 0 ? gridPos = Vector3.zero + originPos : GridToWorldPos(currRadiusSec, currAngleSec);
                    gridText[index] = UtilityClass.CreateWorldText(grid[index].ToString(), Color.white, parent, gridPos + CenterOffset(currRadiusSec, currAngleSec, gridPos), (int)gridSize.x * 10, TextAlignmentOptions.Center, 0);
                }
            }
        }
コード例 #7
0
    public static GameObject InstantiateSibling(this GameObject self, GameObject prefab, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null)
    {
        if (positionSpace == PositionSpace.Local)
        {
            position += self.transform.position;
        }

        Transform parent = self.transform.parent;

        if (parent != null)
        {
            return(parent.gameObject.InstantiateChild(prefab, position, PositionSpace.World, name));
        }
        else
        {
            return(Instantiate(prefab, position, name));
        }
    }
コード例 #8
0
 public static SpriteRenderer InstantiateSprite(this GameObject self, Sprite sprite, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null)
 {
     return(InstantiateSprite(sprite, position, self, positionSpace, name));
 }
コード例 #9
0
    public static SpriteRenderer InstantiateSprite(Sprite sprite, Vector3 position, GameObject parent = null, PositionSpace positionSpace = PositionSpace.Local, string name = null)
    {
        GameObject spriteGO = new GameObject();

        if (parent != null)
        {
            spriteGO.transform.parent = parent.transform;
            if (positionSpace == PositionSpace.Local)
            {
                spriteGO.transform.localPosition = position;
            }
            else
            {
                spriteGO.transform.position = position;
            }
        }
        else
        {
            spriteGO.transform.position = position;
        }

        if (name != null)
        {
            spriteGO.name = name;
        }

        SpriteRenderer sr = spriteGO.GetOrCreateComponent <SpriteRenderer> ();

        if (sprite == null)
        {
            Debug.LogWarning("InstantiateSprite : Sprite parameter is null");
        }
        sr.sprite = sprite;
        return(sr);
    }
コード例 #10
0
    public static GameObject InstantiateChild(this GameObject self, GameObject prefab, Vector3 position, PositionSpace positionSpace = PositionSpace.Local, string name = null)
    {
        GameObject child = GameObject.Instantiate(prefab) as GameObject;

        child.transform.parent = self.transform;
        if (positionSpace == PositionSpace.Local)
        {
            child.transform.localPosition = position;
        }
        else
        {
            child.transform.position = position;
        }
        if (name != null)
        {
            child.name = name;
        }
        return(child);
    }