XNA精灵缩放

时间:2010-11-07 18:31:08

标签: xna

当我使用SpriteBatch.Draw()方法时,我可以获得垂直或水平缩放。例如:

new Vector2(1.0f, 2.0f) 

这意味着我的精灵会扩展Y轴。如何让它对角扩展(例如45或70度)?

(从评论中更新)

我有圆形精灵,这张照片包含阴影和眩光,我需要拉伸这个圆圈(制作椭圆)并旋转它,但我希望阴影不会将其位置变成椭圆形。旋转和缩放每帧都会改变。

World Of Goo游戏中的这张照片:

Picture from World Of Goo game

1 个答案:

答案 0 :(得分:1)

首先将其水平缩放,然后垂直缩放。如果它是45度,你将在两个方向上缩放相同,如果是另一个角度,你可以使用简单的sin / cos函数计算尺度。

编辑:

C#示例:

float angle = 70; // Direction in degrees
float amount = 1;  // By how many percent (1 = 100 %)
float radAngle = (angle / 180) * Math.PI;
float xratio = (1 + Math.cos(radAngle)) * amount;
float yratio = (1 + Math.sin(radAngle)) * amount;
// Then just make a new Vector2(xratio, yratio)

请注意该示例中的错误,我还没有测试过它。你是否也更容易直接使用Vector2拉伸精灵?

SpriteBatch.Draw(/* Some stuff */, new Vector2(2.0, 3.0), /* some more stuff */);  // Scale 2x in horizontal and 3x in vertical direction