我的轨道代码产生错误的结果

我在天空中有一个名为“太阳”的游戏对象。 一个名为“GameManager”的游戏对象跟踪游戏中的时间,它负责更新时间和date。

对于我的太阳,我做了这样的事情来得到一个百分比用于在轨道上的太阳位置:

float percentage = (((float)theGameManager.GetHourOfDay() / (float)GameManager.numberOfHoursInADay) * 360.0f); 

如果给定半径,角度和原点,我有一段代码可以将圆点返回。

 public static Vector3 GetPointInCircle(float radius, float angleInDegrees, Vector3 origin) { Vector3 resultingPoint = new Vector3(0.0f, 0.0f); resultingPoint.x = origin.x + radius * Mathf.Cos(angleInDegrees); resultingPoint.y = origin.y + radius * Mathf.Sin(angleInDegrees); return resultingPoint; } 

我使用这个函数来确定每一帧的太阳位置,因为我传递的角度只是圆的百分比,我期望百分比variables给出越来越大的角度,组成360度。 它确实。

但是,当我设置太阳新位置使用:

 Vector3 newPos = new Vector3(MathsHelper.GetPointInCircle(sunOrbitRadius, percentage, new Vector3(50.0f, 0.0f, 50.0f)).x, MathsHelper.GetPointInCircle(sunOrbitRadius, percentage, new Vector3(0.0f, 0.0f, 0.0f)).y, transform.position.z); transform.position = newPos; 

最终的行为是太阳跳到圈子周围完全随机的位置,经常select接近圆的起点和终点的位置(小时4,y值已经是负值,不应该是这种情况)。

我注意到,如果我换出Time.time的百分比variables,它可以完美的工作,但是这并不能让我控制太阳,根据GameManagers的日子跟踪,我觉得我失去了一些明显的东西,看起来好像是math应该工作。

另外,我在Unity中使用C#。