private void OnCameraRotate() { xAxis.transform.rotation = RotationOfDirection(Vector3.right); yAxis.transform.rotation = RotationOfDirection(Vector3.up); zAxis.transform.rotation = RotationOfDirection(Vector3.forward); Quaternion xQuaternion = RotationOfNormal(Vector3.right); Quaternion yQuaternion = RotationOfNormal(Vector3.up); Quaternion zQuaternion = RotationOfNormal(Vector3.forward); for (int i = 0; i < count - 1; i++) { xPoints[i].transform.rotation = xQuaternion; yPoints[i].transform.rotation = yQuaternion; zPoints[i].transform.rotation = zQuaternion; } for (int i = 0; i < count - 1; i++) { xSigns[i].transform.position = PositionOfDirection(xPos[i], Vector3.forward, POINT_SIGN_BIAS); ySigns[i].transform.position = PositionOfDirection(yPos[i], Vector3.left, POINT_SIGN_BIAS); zSigns[i].transform.position = PositionOfDirection(zPos[i], Vector3.up, POINT_SIGN_BIAS); } // Arrow Ray xRay = new Ray(Vector3.zero, Vector3.left); Ray yRay = new Ray(Vector3.zero, Vector3.down); Ray zRay = new Ray(Vector3.zero, Vector3.back); Vector3 xArrowPos, yArrowPos, zArrowPos; geoCamera.IntersectRay(xRay, out xArrowPos); geoCamera.IntersectRay(yRay, out yArrowPos); geoCamera.IntersectRay(zRay, out zArrowPos); float offset = count / 2.0f; xArrowPos.x = Mathf.Min(offset, xArrowPos.x); yArrowPos.y = Mathf.Min(offset, yArrowPos.y); zArrowPos.z = Mathf.Min(offset, zArrowPos.z); xArrow.transform.position = xArrowPos; yArrow.transform.position = yArrowPos; zArrow.transform.position = zArrowPos; xArrowPos.x -= AXIS_SIGN_OFFSET; yArrowPos.y -= AXIS_SIGN_OFFSET; zArrowPos.z -= AXIS_SIGN_OFFSET; xSign.transform.position = PositionOfDirection(xArrowPos, Vector3.forward, AXIS_SIGN_BIAS); ySign.transform.position = PositionOfDirection(yArrowPos, Vector3.left, AXIS_SIGN_BIAS); zSign.transform.position = PositionOfDirection(zArrowPos, Vector3.up, AXIS_SIGN_BIAS); }