我正在尝试在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);
谢谢。
答案 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}
代表右下角。你的精灵将相对于这个原点定位和旋转。