移动了触摸的贝塞尔曲线样本代码

时间:2012-08-30 09:23:09

标签: iphone ios cocoa-touch cocos2d-iphone bezier

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

编辑:感谢建议,现在我正在使用CAShapeLayer和CAKeyframeAnimation.now制作曲线我需要删除曲线一个用户通过我们的it.like在filght控制应用程序如果ccsprite沿着路径移动背面路径被删除像那个,非常感谢

2 个答案:

答案 0 :(得分:1)

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

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

  1. 将所有坐标存储在FIFO列表中
  2. 将精灵移动到列表下一个点的方向
  3. 一旦精灵有足够的条款,就会丢弃该点并继续下一个点
  4. 使用简单的平滑算法(xSpeed,ySpeed,damp)轻松移动,只要问我是否需要帮助
  5. 编辑:

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

    使用简单的三角法计算x,y坐标。

    看看这个: How to make a sprite point at the mouse. XNA C#

    您可以在https://gamedev.stackexchange.com/上找到更好的帮助,确保有人准备好粘贴类似于您需要的代码。我多年前在阿米斯Amigo上做过这个,但是我无法将代码粘贴到这里,抱歉:)

答案 1 :(得分: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方法中实现它。 希望它有所帮助。