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

谢谢你。

4

2 回答 2

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原点将其居中。

于 2012-08-07T19:31:02.480 回答
0

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

于 2012-08-07T19:23:44.537 回答