Как ограничить размер линии, сделанной касанием в приложении

Я создал код, который создает линию неограниченного размера на ощупь, и мне интересно, как ограничить размер таким образом, чтобы начало и конец строки могли находиться на небольшом расстоянии от максимально установленного расстояния друг от друга?

Код, который я использовал, был:

pathToDraw = CGPathCreateMutable();
CGPathMoveToPoint(pathToDraw, NULL, positionInScene.x, positionInScene.y);
lineNode = [SKShapeNode node];
lineNode.path = pathToDraw;
lineNode.zPosition = 1000;
lineNode.strokeColor = [SKColor blueColor];
lineNode.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromPath:pathToDraw];
lineNode.physicsBody.categoryBitMask = ballCategory;
lineNode.physicsBody.contactTestBitMask = ballCategory;
[self addChild:lineNode];

на ощупь начал метод и

CGPathAddLineToPoint(pathToDraw, NULL, location.x, location.y);
lineNode.path = pathToDraw;
lineNode.zPosition = 1000;
lineNode.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromPath:pathToDraw];
lineNode.physicsBody.categoryBitMask = boundaryCategory;
lineNode.physicsBody.contactTestBitMask = ballCategory;
lineNode.name = @"boundary";
lineNode.physicsBody.restitution=1;

в методе touchMoved.

Спасибо

1 ответ

Сначала добавьте эту функцию...

// Computes the distance between two points
static inline CGFloat distance(CGPoint p1, CGPoint p2)
{
    CGFloat dx = p1.x - p2.x;
    CGFloat dy = p1.y - p2.y
    return sqrt(dx*dx+dy*dy);
}

затем добавьте это к вашей функции перемещения...

CGFloat lineLength = distance(location, positionInScene);
if (distance < kMaxDistance) {
    // Draw line here

}

Кроме того, я предлагаю вам подождать, пока вы не узнаете, что строка действительна, прежде чем создавать SKShapeNode. Возможно, вам следует создать узел-заполнитель, такой как круг, а затем создать линию узла формы после того, как вы проверите, что линия действительна.

Другие вопросы по тегам