2

タッチを使用してベジェ曲線を描画するサンプル コードを探しています。リンクやサンプル コードがあれば教えてください。ユーザーが指で描いたパスに沿ってccspriteを移動する必要がある飛行制御用のゲームを開発しています

編集: 提案をありがとう、今私は CAShapeLayer と CAKeyframeAnimation で曲線を作成しています.今私は曲線を削除する必要があります。とても

4

2 に答える 2

1

ベジェ曲線は、2つの端点と2つのアンカーを使用して描画されます。この情報を使用してベジェ曲線を描くのは非常に簡単です。手描きの曲線からこれらの点を取得することをベクトル化(画像トレース)と呼びます。私は非常に複雑な仕事です。

次のような単純なアルゴリズムを使用すると、はるかに良い結果が得られると思います。

  1. すべての座標をFIFOリストに保存します
  2. スプライトをリストの次のポイントの方向に移動します
  3. スプライトがポイントに十分な句になったら、ポイントを破棄して次のポイントに進みます
  4. 単純なスムージングアルゴリズム(xSpeed、ySpeed、ダンピング)を使用して動きを楽にします。これについてサポートが必要かどうか、私に尋ねてください。

編集 :

フライトコントロールのビデオをチェックしたところ、このようにします。ユーザーが1つを押すと、それを選択します。次に、ユーザーは描画を開始し、ポイントを1つずつユーザーの指にできるだけ近づけてプロットします(移動は平面の回転半径によって制限されます)。これにより、一連のステップが記録されます。各ステップはその角度によって定義され(速度は一定だと思います)、この角度は前の1+/-回転能力と等しくなければなりません。

単純な三角法を使用して、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 に答える