Как ограничить размер линии, сделанной касанием в приложении
Я создал код, который создает линию неограниченного размера на ощупь, и мне интересно, как ограничить размер таким образом, чтобы начало и конец строки могли находиться на небольшом расстоянии от максимально установленного расстояния друг от друга?
Код, который я использовал, был:
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. Возможно, вам следует создать узел-заполнитель, такой как круг, а затем создать линию узла формы после того, как вы проверите, что линия действительна.