2011-09-08 142 views
0

我想根据移动/速度方向伸展精灵。为了简单起见,精灵是白色的5x5像素。包括一个黑色的1x1边框XNA伸缩精灵

因此,例如,如果精灵从当前位置移动到'3oclock',它将像细线一样沿对角线伸展/缩放,类似于基于随机移动的任何其他角度/弧度。

我尝试过:vector2位置 - 原始位置,然后将其与:length()用于x和y比例值,但这会产生大尺度块而不是线?

任何想法?在缩放和计算方向角度

保罗。

+0

在缩放图像中包含边框是一个坏主意,因为边框会变形,看起来很奇怪。如果对象几何规则,首先绘制缩放对象,然后用相应的比例绘制边框。 – Elideb

回答

0

我想你必须创建多个精灵来显示这一行。你将需要过渡精灵的线内部分和精灵的终点。

+0

会与原始的东西可能工作? – Paul

+0

是的,我可以看到一组创造你想要的效果的原始人。 –

0

请说清楚你的问题。你能上传任何截图吗?但是,据我所知,您应该使用距离公式在X方向上缩放精灵,然后使用tan逆函数对其旋转。

2

这是前一段时间,所以对提出请求的原始人可能没有多大用处。但是你有三个选择。一种是使用Draw(Texture2D,Rectangle,...)而不是Draw(Texture2D,Vector2 ...)。 Vector2只是设置x和y坐标,所以如果您使用该方法调整大小,您将调整整个sprite的大小。矩形包含X,Y &单独的高度和宽度值,因此使用矩形可以沿一个轴调整大小。你仍然会遇到问题,但可以通过将两端视为单独的子画面来解决问题。我将这种方法用于可变大小的边框。

第二个在你描述的简单精灵的情况下工作,就是在运行时创建纹理。创建一个所需大小的新Texture2D,然后创建一个足够大的颜色数组来覆盖每个像素,并使用.SetData(Color [])分配该数组。这样做有一定的计算开销,但是我用它在运行时突出显示了一个可变大小的边界框,所以它工作正常。

当然,原始选项也很好看。 :)