XNA拉伸精灵

时间:2011-09-08 20:18:06

标签: graphics xna 2d scale

我想基于movemnt / velocity方向拉伸精灵。为简单起见,精灵是白色的5x5像素。包括黑色1x1边框

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

我尝试使用:vector2 position - 原始位置,然后使用:length()表示x和y比例值,但是这会产生大比例的块而不是一条线?

有什么想法吗?缩放和计算方向角

保罗。

3 个答案:

答案 0 :(得分:2)

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

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

当然,基元选项看起来也不错。 :)

答案 1 :(得分:0)

我认为你必须创建多个精灵来显示这条线。你需要过渡精灵用于线的内部部分和精灵用于端点。

答案 2 :(得分:0)

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