2

我正在寻找使用触摸绘制贝塞尔曲线的示例代码,如果有人有链接或示例代码,请帮助我。我正在开发飞行控制游戏,我必须沿着用户用手指绘制的路径移动我的 ccsprite

编辑:感谢您的建议,现在我正在使用 CAShapeLayer 和 CAKeyframeAnimation 制作曲线。现在我需要删除曲线一个用户通过我们的它。就像在飞行控制应用程序中,如果 ccsprite 沿着路径移动,背面路径就这样被删除,谢谢非常

4

2 回答 2

1

使用两个端点和两个锚点绘制贝塞尔曲线。使用此信息绘制贝塞尔曲线非常容易。从手绘曲线中获取这些点称为矢量化(图像跟踪)。我是一个相当复杂的任务。

我认为使用这样的简单算法可以获得更好的结果:

  1. 将所有坐标存储在 FIFO 列表中
  2. 将您的精灵移向列表的下一个点
  3. 一旦精灵足够子句丢弃该点并继续下一个点
  4. 通过使用简单的平滑算法(xSpeed、ySpeed、阻尼)来简化运动,请问我是否需要帮助

编辑 :

我刚刚检查了飞行控制视频,我会这样做。一旦用户按下一个,它就会选择它。然后用户开始绘图,尽可能靠近用户手指绘制点(移动受平面转弯半径限制)。这将记录一系列步骤。每一步都由它的角度定义(我认为速度是恒定的),这个角度必须等于前一个 +/- 转动能力。

使用简单的三角函数来计算 x,y 坐标。

看看这个: 如何在鼠标上创建一个精灵点。XNA C#

你会在https://gamedev.stackexchange.com/上找到更好的帮助,确保有人准备好粘贴类似于你需要的代码。几年前我在 Amiga 上的 Amos 做过,但我无法将代码粘贴到这里,抱歉 :)

于 2012-08-30T09:32:30.430 回答
0
#include <math.h>

    CGFloat radius = 100;
    //CGFloat pi = 3.1415927; //comes for free in math.h

    UIBezierPath *basecircle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0,0,radius*2,radius*2)];
    [[UIColor blackColor] set];
    [basecircle fill];

这是绘制bezierPath的代码。你需要在drawRect方法中实现这个。希望能帮助到你。

于 2012-08-30T09:31:19.093 回答