首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XNA精灵结垢

XNA精灵结垢
EN

Stack Overflow用户
提问于 2010-11-07 18:31:08
回答 1查看 1.3K关注 0票数 0

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

代码语言:javascript
运行
复制
new Vector2(1.0f, 2.0f) 

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

(从评论更新)

我有圆圈精灵和这张图片包含阴影和眩光,我需要伸展这个圆(使椭圆)并旋转它,但我希望阴影不改变它的位置为椭圆。旋转和缩放改变了每一帧。

这张来自世界古柯游戏的图片:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-07 18:37:01

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

编辑:

C#示例:

代码语言:javascript
运行
复制
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扩展雪碧不是更容易吗?

代码语言:javascript
运行
复制
SpriteBatch.Draw(/* Some stuff */, new Vector2(2.0, 3.0), /* some more stuff */);  // Scale 2x in horizontal and 3x in vertical direction
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4119055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档