Ios UIBezierPath的close()函数不适用于SKShapeNode

Ios UIBezierPath的close()函数不适用于SKShapeNode,ios,sprite-kit,arkit,skshapenode,Ios,Sprite Kit,Arkit,Skshapenode,close函数应在子路径中的第一个点和最后一个点之间创建线段。它在操场上工作,但不工作 当我用UIBezierPath创建SKShapeNode并将其用于ARSKView时。 有没有办法解决这个问题 func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? { let bezierPath = UIBezierPath() bezierPath.move(to: CGPoint(x: 40, y: 0)

close函数应在子路径中的第一个点和最后一个点之间创建线段。它在操场上工作,但不工作 当我用UIBezierPath创建SKShapeNode并将其用于ARSKView时。 有没有办法解决这个问题

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
    let bezierPath = UIBezierPath()
    bezierPath.move(to: CGPoint(x: 40, y: 0))
    let shapeHeight: CGFloat = 40
    bezierPath.addQuadCurve(to: CGPoint(x: 40.0, y: shapeHeight), controlPoint: CGPoint(x: 100.0, y: shapeHeight/2.0))
    bezierPath.close()

    let shape = SKShapeNode(path: bezierPath.cgPath, centered: true)
    shape.isAntialiased = false
    shape.strokeColor = .white
    shape.fillColor = .clear
    shape.lineWidth = 2.0
    return shape
}

我不知道为什么会出现这种情况,但很容易解决:

    bezierPath.move(to: CGPoint(x: 40, y: 0))

    bezierPath.addLine(to:  CGPoint(x: 40.0001, y: 0)) //Add this line

    let shapeHeight: CGFloat = 40
    bezierPath.addQuadCurve(to: CGPoint(x: 40.0, y: shapeHeight), controlPoint: CGPoint(x: 100.0, y: shapeHeight/2.0))
    bezierPath.close()

真有趣,苹果真有趣!非常奇怪的行为,非常有趣地知道为什么40不起作用,但40.0001起作用。谢谢当直线在路径上相交时,SKShapeNodes会出现绘图问题,这可能就是您看到问题并需要附加附加点的原因。