gpt4 book ai didi

swift - 如何防止关闭贝塞尔路径

转载 作者:行者123 更新时间:2023-11-28 06:25:31 25 4
gpt4 key购买 nike

我想创建一条贝塞尔曲线,并为我的对象创建一个碰撞边界。

let firstSurfacePoint = CGPoint(x: 30, y: 120)
let secondSurfacePoint = CGPoint(x: 20, y: 200)
let thirdSurfacePoint = CGPoint(x: 200, y: 300)

let center = CGPoint(x: 150, y: 120)
let radius: CGFloat = 120.00
let arcWidth: CGFloat = 20.00
let fourthSurfacePoint = CGPoint(x: 240, y: 300)

func createCollisionPath(collision: UICollisionBehavior) {

let line = UIBezierPath()

line.moveToPoint(firstSurfacePoint)
line.addCurveToPoint(thirdSurfacePoint, controlPoint1: secondSurfacePoint, controlPoint2: secondSurfacePoint)
line.addLineToPoint(fourthSurfacePoint)

let currentPath = CAShapeLayer()
currentPath.path = line.CGPath
currentPath.strokeColor = UIColor.blackColor().CGColor
currentPath.fillColor = UIColor.clearColor().CGColor
currentPath.lineWidth = 1
view.layer.addSublayer(currentPath)

collision.addBoundaryWithIdentifier("curve", forPath: line)

}

如果我选择 addArcWithCente,我会得到同样糟糕的结果

line.moveToPoint(firstSurfacePoint)
line.addArcWithCenter(center, radius: radius, startAngle: CGFloat(M_PI), endAngle: CGFloat(M_PI/2), clockwise: false)
line.addLineToPoint(fourthSurfacePoint)

在这两次尝试中收到了一个奇怪的结果,这是至关重要的,因为我无法创建正确的碰撞。在第一次尝试中,我的对象穿过路径,就好像它是从 firstPoint 到 thirdPoint 的直线,在第二次尝试中也是如此

我做错了什么?

My figure(without Arc)

My figure(with Arc)

最佳答案

currentPath.fillColor = nil

currentPath.fillColor = UIColor.clearColor().CGColor

关于swift - 如何防止关闭贝塞尔路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42006716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com