2012-08-07 46 views
0

我想在xna中创建一个游戏,我得到了一个我希望玩家围绕它移动的圆圈,正如你在下面的图片中看到的,它的工作除了我不喜欢的绘图部分 这里有一个图像链接http://s12.postimage.org/poiip0gtp/circle.png移动一个精灵来匹配xna中的一个圆圈的边框

我想把玩家对象放在圆圈的边缘,所以它看起来不像玩家站在空中

我这是怎么计算玩家的位置

rad = (degree * Math.PI/180); 
      rotationDegree = (float)((Math.PI * degree)/180); 
      currentPosition.X = (float)(Math.Cos(rad) * Earth.radius + (GraphicsDevice.Viewport.Width/2)); 
      currentPosition.Y = (float)(Math.Sin(rad) * Earth.radius + (GraphicsDevice.Viewport.Height/2)); 

这是我画的球员

spriteBatch.Draw(texture,currentPosition, null, Color.White,rotationDegree, Vector2.Zero,1f,SpriteEffects.None, 1f); 

谢谢。

回答

1

使用spritebatch的原点重载。哪一个是根据位置绘制精灵的地方。

Spritebatch.Draw(texture,Position, null,Color.White,0f,new Vector2(texture.Width/2,texture.Height /2),1f,SpriteEffects.None, 0); 

使用texture.Width/2,texture.Height /2作为原点将它居中。

0

它看起来像你想要做的是调整精灵的origin,这是你传递到SpriteBatch.Draw()的矢量。这用于确定你的精灵的“中心点”; {0, 0}表示精灵的左上角,而{spriteWidth, spriteHeight}表示右下角。你的精灵将被定位并相对于这个原点旋转。

相关问题