C# MonoGame/XNA旋转图像
这个代码是用来画塔的。正方形位置位于正方形的左上角。瓦片大小只是正方形的尺寸C# MonoGame/XNA旋转图像,c#,xna,sprite,monogame,image-rotation,C#,Xna,Sprite,Monogame,Image Rotation,这个代码是用来画塔的。正方形位置位于正方形的左上角。瓦片大小只是正方形的尺寸 SpriteBatch.Draw(TowerImage, new Rectangle(square.X * TILE_SIZE, square.Y * TILE_SIZE, TILE_SIZE, TILE_SIZE), null, Color.White, myTower.Rotation, new Vector2(TILE_SIZE - 35, TILE_SIZE - 35), SpriteEffects.
SpriteBatch.Draw(TowerImage, new Rectangle(square.X * TILE_SIZE, square.Y * TILE_SIZE, TILE_SIZE, TILE_SIZE), null, Color.White, myTower.Rotation,
new Vector2(TILE_SIZE - 35, TILE_SIZE - 35), SpriteEffects.None, (float)0.0);
这段代码是我如何确定旋转的
public void FaceTarget(Vector2 center, Vector2 enemyCenter)
{
Vector2 direction = center - enemyCenter;
direction.Normalize();
this.Rotation = (float)Math.Atan2(-direction.X, direction.Y);
}
我这样做是基于:
旋转真的很奇怪,下面是它通常的样子:
但当它旋转时,它是这样的:
最后,当它向下看的时候,它完全偏离了路径,它并没有按中心旋转,但整个图像都在移动,为什么它会这样做
只有第一个图像实际上是位于正确位置的塔
它似乎是左上角点的旋转,我不知道为什么。有人能帮忙吗?显然,您的精灵正在考虑将一个
矢量2.0
(或矢量2(0,0)
)点作为旋转原点。这意味着Texture2D
文件的左上角点
我看到您正在将Draw
方法中的原点设置为TILE\u SIZE-35
,这让我想知道,TILE是70像素W/H的正方形吗
如果将减法替换为新矢量2(TowerImage.Width/2,TowerImage.Height/2)
,会发生什么情况
我将给您留下一个示例,从中可以轻松地解释如何始终按照鼠标位置旋转图像:
更新方法:
MouseState mouse = Mouse.GetState();
mousePosition = new Vector2(mouse.X, mouse.Y);
Vector2 direction = mousePosition - position;
direction.Normalize();
rotation = (float)Math.Atan2(
(double)direction.Y,
(double)direction.X);
spriteBatch.Begin();
spriteBatch.Draw(
rocket,
position,
null,
Color.White,
rotation,
new Vector2(
rocket.Width / 2,
rocket.Height / 2),
1.0f,
SpriteEffects.None,
1.0f);
spriteBatch.End();
绘制方法:
MouseState mouse = Mouse.GetState();
mousePosition = new Vector2(mouse.X, mouse.Y);
Vector2 direction = mousePosition - position;
direction.Normalize();
rotation = (float)Math.Atan2(
(double)direction.Y,
(double)direction.X);
spriteBatch.Begin();
spriteBatch.Draw(
rocket,
position,
null,
Color.White,
rotation,
new Vector2(
rocket.Width / 2,
rocket.Height / 2),
1.0f,
SpriteEffects.None,
1.0f);
spriteBatch.End();
检查张贴的代码中旋转角度的计算结果是否与您的略有不同,但重要的代码是
绘制方法中原点的计算。您是否尝试过矢量2(sprite.width/2,sprite.height/2)
原点?我一定会尝试。此外,瓷砖大小等于路径和草地的纹理,它是40像素,出于某种原因,如果我使用瓷砖大小-35,它会将其放置在瓷砖中心周围,即使我使用瓷砖大小或其他东西,它也会将其放置得非常远。但是是的,它在左上角旋转,我不知道为什么。即使在调整后,这是一个巨大的旋转,变得难以控制。我明天会试试那个教程。太好了,如果没用请告诉我,我会在我的家用电脑上试试:)谢谢!图像宽度/2起作用了,我怎么这么笨。。我试着移动它的原点等等。。。这根本不管用祝贺你!很高兴我能帮忙:)