2016-11-02 69 views
0

我想從2個獨立的bezier路徑創建SKSpriteNode。2 bezier path to skspritenode

它與道路邊界相似。這些路徑不會交叉,但我希望獲得1個SpriteNode作爲玩家移動的邊界。

原因是我想在它們之間獲得相等的距離。我認爲如果我從2個路徑創建1個SkSpriteNode,對我來說會更容易。

我需要SKSpriteNode得到接觸時,玩家接觸的是​​「邊界」

如何做到這一點?

謝謝

回答

0

添加SKSpriteNode

let container = SKSpriteNode.init(color: UIColor.redColor(), size: CGSizeMake(800, 400)) 
    container.position=CGPointMake(300, 300) 
    self.addChild(container) 

創建的CGPoint的數組。我以前只是一個三角形,你可以使用任何你想要的:

let firstPathArray:[CGPoint]=[CGPoint(x: 0, y: 0),CGPoint(x: 100, y: 0),CGPoint(x: 50, y: 100)] 

添加路徑容器:

addbezierPathToContainer(container,pathArray: firstPathArray) 

添加路徑:

func addbezierPathToContainer(container:SKSpriteNode,pathArray:[CGPoint]) -> Void { 
    let newpath = UIBezierPath() 
    var startpoint:Bool=false; 
    for path in pathArray { 
     if(!startpoint) 
     { 
      newpath.moveToPoint(CGPoint(x: path.x, y: path.y)) 
      startpoint=true; 
     } 
     else 
     { 
      newpath.addLineToPoint(CGPoint(x: path.x, y: path.y)) 
      newpath.addLineToPoint(CGPoint(x: path.x, y: path.y)) 
     } 


    } 
    //close path 
    newpath.closePath() 
    UIColor.blackColor().setStroke() 
    newpath.stroke() 
    let pathNode = SKShapeNode(path: newpath.CGPath) 
    container.addChild(pathNode); 
} 
+0

非常感謝你。 – Mamazur