当我使用SpriteBatch.Draw()
方法时,我可以获得垂直或水平缩放。例如:
new Vector2(1.0f, 2.0f)
这意味着我的精灵会扩展Y轴。如何让它对角扩展(例如45或70度)?
(从评论中更新)
我有圆形精灵,这张照片包含阴影和眩光,我需要拉伸这个圆圈(制作椭圆)并旋转它,但我希望阴影不会将其位置变成椭圆形。旋转和缩放每帧都会改变。
World Of Goo游戏中的这张照片:
答案 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