2011-06-17 22 views
0

嘿所以我有一个精灵班,并且我正在使它每秒转360度,同时提高速度。但是,我最终成了螺旋状,并没有停留在由每秒360度连续转动形成的原始圆上。如何提高精灵速度而不是以螺旋而不是盘旋

我该如何解决这个问题?精灵需要加快速度并保持相同的路径。

下面的代码:

box.Accelerate(10*Window.GetFrameTime()); 
box.Turn(360.0*Window.GetFrameTime()); 
+0

什么是加速?线性还是旋转? – totowtwo

回答

2

如果你想使一个精灵转了一圈,把该代码。例如,

float time = Window.GetFrameTime(); 
angle += speed * (time - lastTime); 
lastTime = time; 
float x = sinf(angle), y = cosf(angle); 
box.SetPos(50*x + center.x, 50*y + center.y); 
box.Turn(angle + QUARTER_TURN); 
2

如果子画面正在加速(移动速度每秒),但以每秒360度的恒定速度还在转动,它将始终在向外螺旋移动。

认为它是这样的:

如果子画面移动围绕半径为1(即,单位圆)的圆,以每秒和移动360度的速度旋转,以2 * PI的速度单位(即你的圆的周长)每秒钟,精灵会每隔一秒钟在圆周上一直移动。

如果您提高精灵的移动速度,但它保持在同一个圆上,它会比每一秒钟更快地围绕圆圈更快地移动到。如果它仍然每秒钟绕着圆圈旋转一圈,圆圈必须变大。

为了让您的精灵保持在同一个圆上,它还必须提高与其加速速度成比例的速率。