0

スプライトをタッチしてドラッグしようとしています。タッチがスプライトの外にある場合、それは動かないはずです。

ユーザーがスプライトをタッチしてドラッグすると、背後にパスが描画されます。このパスは (パス間のギャップのように) 壊れてはなりません。常に 1 つの一貫したパスが存在する必要があります。

mysprite.position を使用して、スプライトの新しい位置を現在のタッチ位置と同じに設定しています。ただし、ユーザーがパスから少し外れたポイントに触れると、ギャップが生じます。私も CCMoveTo アクションを使用してみましたが、パスの描画が遅くなり、ユーザーが非常に速く描画している場合、スプライトが遅れているように見えます。

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[mySprite runAction:[CCMoveTo actionWithDuration:0.0f position:touchLocation]];

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
   if(CGRectContainsPoint([mySprite boundingBox], currentTouchPoint)){
        CGPoint translation = ccpSub(currentTouchPoint, lastTouchPoint);
        CGPoint newPos = ccpAdd(mySprite.position, translation);
        mySprite.position = newPos;
        [touchPoints addObject:NSStringFromCGPoint(currentTouchPoint)];
        [touchPoints addObject:NSStringFromCGPoint(lastTouchPoint)];
    }
}

それを達成する方法はありますか?

4

0 に答える 0