How to draw a line in Sprite-kit

前端 未结 7 1078
长发绾君心
长发绾君心 2020-12-02 18:09

How can one draw a line in Sprite-kit? For example if I want to draw a line in cocos2d, I could easily using ccDrawLine();

Is there an equivalent in sp

相关标签:
7条回答
  • 2020-12-02 18:51

    Using SKShapeNode you can draw line or any shape.

    SKShapeNode *yourline = [SKShapeNode node];
    CGMutablePathRef pathToDraw = CGPathCreateMutable();
    CGPathMoveToPoint(pathToDraw, NULL, 100.0, 100.0);
    CGPathAddLineToPoint(pathToDraw, NULL, 50.0, 50.0);
    yourline.path = pathToDraw;
    [yourline setStrokeColor:[SKColor redColor]];
    [self addChild:yourline];
    

    Equivalent for Swift 4:

    var yourline = SKShapeNode()
    var pathToDraw = CGMutablePath()
    pathToDraw.move(to: CGPoint(x: 100.0, y: 100.0))
    pathToDraw.addLine(to: CGPoint(x: 50.0, y: 50.0))
    yourline.path = pathToDraw
    yourline.strokeColor = SKColor.red
    addChild(yourline)
    
    0 讨论(0)
  • 2020-12-02 18:53

    Here is the equivalent code in SWIFT:

        let pathToDraw:CGMutablePathRef = CGPathCreateMutable()
        let myLine:SKShapeNode = SKShapeNode(path:pathToDraw)
    
        CGPathMoveToPoint(pathToDraw, nil, 100.0, 100)
        CGPathAddLineToPoint(pathToDraw, nil, 50, 50)
    
        myLine.path = pathToDraw
        myLine.strokeColor = SKColor.redColor()
    
        self.addChild(myLine)
    

    Converted from to @Rajneesh071's objective c code sample.

    0 讨论(0)
  • 2020-12-02 18:58

    If you only want a line, sort of how people use UIViews for lines (only), then you can just use a SKSpriteNode

    SKSpriteNode* line = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(160.0, 2.0)];
    [line setPosition:CGPointMake(136.0, 50.0))];
    [self addChild:line];
    
    0 讨论(0)
  • 2020-12-02 18:58

    Swift 3 for drawing line via SKShapeNode:

                // Define start & end point for line
                let startPoint = CGPoint.zero
                let endPoint = CGPoint.zero
    
                // Create line with SKShapeNode
                let line = SKShapeNode()
                let path = UIBezierPath()
                path.move(to: startPoint)
                path.addLine(to: endPoint)
                line.path = path.cgPath
                line.strokeColor = UIColor.white
                line.lineWidth = 2
    
    0 讨论(0)
  • 2020-12-02 19:05

    Here is my Swift 4 function to add a Line between two points:

    func drawLine(from: CGPoint, to: CGPoint) {
        let line = SKShapeNode()
        let path = CGMutablePath()
        path.addLines(between: [from, to])
        line.path = path
        line.strokeColor = .black
        line.lineWidth = 2
        addChild(line)
    }
    

    Hope it helps!!

    0 讨论(0)
  • 2020-12-02 19:06

    Using SKShapeNode I was able to do this.

    // enter code here
    SKShapeNode *line = [SKShapeNode node];
    
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 50.0, 40.0);
    CGPathAddLineToPoint(path, NULL, 120.0, 400.0);
    
    line.path = path;
    [line setStrokeColor:[UIColor whiteColor]];
    
    [self addChild:line];
    
    0 讨论(0)
提交回复
热议问题