移动精灵以匹配xna中圆圈的边框

时间:2012-08-07 19:12:19

标签: xna xna-4.0

我正在尝试在xna中构建一个游戏,我有一个圆圈,我希望玩家可以在它周围移动,如下图所示,它的工作效果很好,除了我不满意的绘图部分同 这是图像http://s12.postimage.org/poiip0gtp/circle.png

的链接

我想将玩家对象置于圆圈的边缘,这样看起来不像玩家站在空中

这是我如何计算玩家的位置

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);
谢谢。

2 个答案:

答案 0 :(得分: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作为原点会使其居中。

答案 1 :(得分:0)

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