0

我正在使用 monogame 创建一个游戏,该游戏需要用户触摸输入并沿着他们绘制的路径移动精灵。我希望能够从屏幕上的某个点(比如一个正方形)画一条线,然后在屏幕上的任何方向上画这条线,让它平滑(贝塞尔曲线),然后让一个角色跟随这条线。

有谁知道monogame是否支持xna 4.0中的曲线类?我真的不知道从哪里开始使用上面提到的来自用户触摸输入的技术来绘制和平滑线条,因为我的数学不是很好。

有没有人这样做过,并且不介意指出我正确的方向?您认为可能有用的任何片段或文章,请发布它们。我发现的所有文章都使用预先确定的路径,这些路径使用贝塞尔曲线平滑,而不是来自用户触摸输入。

干杯

4

2 回答 2

3

贝塞尔曲线很难自动曲线拟合到一组点,因为您需要设置不在曲线上的控制点。

我建议使用Catmull-Rom 样条线或其他通过控制点的样条线。你会很难找到现成的实现,但我可以帮助你开始。Catmull-Rom 样条是分段定义的参数函数。您的点集 p 是您的触摸坐标。给定四个点 p0、p1、p2 和 p3,使用该页面上的方程式定义 p1 和 p2 之间的段。您可以通过创建许多 b 样条来指定使用更多段的样条,如下所示:

样条 0 = p0, p0, p1, p2 (重复 p0 以确保样条从 p0 而不是 p1 开始)
样条 1 = p0, p1, p2, p3
样条 2 = p1, p2, p3, p4
样条 3 = p2 , p3, p4, p5
...
样条 (n-1) = p(n-2), p(n-1), p(n), p(n)

要绘制样条线,您可以定期使用精灵(在 t=0、t=0.1、t=0.2... 处绘制精灵)或使用线带或三角形带。

于 2012-08-19T00:19:14.920 回答
0

我知道这个线程很旧,但我正在尝试类似的任务。我偶然发现了这个链接,它可以帮助你:

http://www.rengelbert.com/tutorial.php?id=182

它需要用户的触摸输入来为精灵绘制一条平滑的曲线路径。

也许这个资源可以帮助其他人。

于 2014-02-24T06:27:38.810 回答