Ich habe es geschafft, eine Linie mit Array meiner zufälligen CGPoints zu zeichnen.Linie mit SpriteKit zeichnen und Kollision erkennen
-(void)drawLine
{
SKShapeNode *mainLine = [SKShapeNode node];
CGMutablePathRef pathToDraw = CGPathCreateMutable();
CGPathMoveToPoint(pathToDraw, NULL, 0, 0);
for(int i;i<pointsInMyView.count;i++)
{
CGPoint myPoint = [pointsInMyView[i] CGPointValue];
CGPathAddLineToPoint(pathToDraw, NULL, myPoint.x, myPoint.y);
mainLine.path = pathToDraw;
}
[mainLine setLineWidth:40];
[mainLine setStrokeColor:[SKColor whiteColor]];
mainLine.name = @"mainLine";
[self addChild:mainLine];
}
Wie Sie sehen können, zeichne ich einen SKShapeNode. Mein Ziel ist es, die Kollision meines SKSpriteNode mit meiner Linie zu überprüfen. Aber natürlich erzeugt dieser Formknoten einen Rahmen, der alle Punkte meiner Linie enthält, und in diesem Fall ist mein ShapeNode überall in meiner Ansicht. Mein SpriteNode erkennt die Kollision mit diesem ShapeNode ständig. Ich sollte mehrere verschiedene ShapeNodes zeichnen, denke ich, also würde jeder Knoten seinen eigenen Rahmen haben. Aber wenn ich es so mache, ist meine Leitung nicht verbunden. Gibt es eine Lösung, um diesen Knoten für Knoten zu zeichnen und immer noch nette Linie zu bekommen.
Wenn Ihr SKShapeNode aus zufälligen Punkten besteht, wird es sich über den gesamten Bildschirm verteilen (ich habe es gerade ausprobiert). Ich denke, dass Sie einen Algorithmus entwickeln müssen, um sicherzustellen, dass die Linie sich nicht überkreuzt, und eine relativ einfache Linie bildet. Können Sie Ihren Code posten, der '[pointsInMyView]' generiert? –
Ich weiß, dass mein Shape-Knoten nur mein Bildschirm ist. Der Punkt ist, dass ich diese zufälligen Punkte brauche. Meine Linie ist nur ein großer Formknoten mit Vektorlinien von einem Punkt zum anderen. Das ist in Ordnung. Aber jetzt arbeite ich daran, Kollisionen mit meinem Touch-Standort und der Linie, die ich gezeichnet habe, zu erkennen. Problem ist, dass Kollision die ganze Zeit erkannt wird, wenn ich innerhalb des Knotenrahmens bin. Ich möchte, dass meine Berührung nicht auf leere Pixel meines Formknotens reagiert, nur auf Pixel, wo meine Linie gezeichnet wird. Irgendeine Idee? – user3215624
Versuchen Sie, eine Berührung in der Leitung oder einen anderen Sprite zu erkennen, der die Leitungen kontaktiert? –