我正在使用一个非常基本的公式来计算我的精灵(例如太空船)应基于Xbox控制器指尖所面对的角度,即您使用指尖来旋转飞船。
在我的主要更新方法中:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
在我的主要绘制方法中:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
如您所见,它非常简单,我从指尖获取当前弧度并将其存储在浮子中shuttleAngle
,然后将其用作旋转角度参数(以弧度为单位)以绘制往复运动。
由于某些原因,当我旋转Sprint时,它在0、90、180和270度的角度感觉发粘。它想以这些角度解决。这并不能像在使用类似机制的游戏中那样给我流畅自然的旋转。PS:我的Xbox控制器很好!
1
Atan2是否先获取Y值,然后获取X值?msdn.microsoft.com/zh-CN/library/system.math.atan2.aspx。您需要先交换x和y值。您还考虑过通过插值来简化值吗?toValue-CurrentValue的/速度
—
Sidar
对不起,我的意思是newShuttleAngle-oldShuttleAngle /速度。
—
Sidar 2012年
那只会影响视觉定向,而这完全取决于纹理图像的定向方式-我看不到这会影响他的问题。
—
Joe Shanahan 2012年
这是Windows吗?如果是这样,则将项目设置为使用控制台窗口(项目->项目选项->应用程序->输出类型),然后打印出您的角度
—
仍然存在
shuttleAngle
以查看该角度是否
出色的工作SomeWritesReserved和其他所有人,这个网站让我印象深刻,反馈是如此之快!这是我的第一篇文章,所以有人可以告诉我我需要做些什么来适当赞扬所有帮助过的人吗?
—
休