예제 #1
0
    private void Start()
    {
        line = this.GetComponent <LineRenderer>();

        line.positionCount = (walls.transform.childCount + 1) * RECT_LINES * STRAIGHT_LINES;
        wallPointsList     = new List <WallPoints>();

        /*
         *    计算点在旋转过后的坐标
         *    填充到wallPointsList当中
         */
        for (int i = 0; i < walls.transform.childCount; ++i)
        {
            var wallPoints = new WallPoints();
            var wall       = walls.transform.GetChild(i);
            var x          = wall.localScale.x / 2;
            var y          = wall.localScale.y / 2;
            var angle      = wall.localEulerAngles.z * PI / 180.0f;

            var position = wall.position;
            wallPoints.Point00 = GetPointByRotation2D(-x, -y, angle, position);
            wallPoints.Point01 = GetPointByRotation2D(-x, y, angle, position);
            wallPoints.Point10 = GetPointByRotation2D(x, -y, angle, position);
            wallPoints.Point11 = GetPointByRotation2D(x, y, angle, position);

            wallPointsList.Add(wallPoints);
        }
    }
예제 #2
0
        protected void setupWallPoints()
        {

            for (int i = 0; i < wallPositions.Count; i++)
            {
                if (wallPositions[i].Y == 0)
                {
                    WallPoints w = new WallPoints();
                    if (wallRotations[i].Y == 0) // if wall is horizontal
                    {
                        float xA = (wallPositions[i].X) - wallScales[i].X;
                        float xB = (wallPositions[i].X) + wallScales[i].X;
                        float Z = wallPositions[i].Z;
                        ;
                        w.startPosition = new Vector2(xA, Z);
                        w.endPosition = new Vector2(xB, Z);
                        wallPlanePositions.Add(w);
                    }
                    else // wall is along the z axis
                    {
                        float x = wallPositions[i].X;
                        float zA = (wallPositions[i].Z) - wallScales[i].X;
                        float zB = (wallPositions[i].Z) + wallScales[i].X;

                        w.startPosition = new Vector2(x, zA);
                        w.endPosition = new Vector2(x, zB);
                        wallPlanePositions.Add(w);

                    }
                }
            }
        }