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); } }
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); } } } }