美文网首页
iOS UICollisionBehavior(碰撞行为) 部分

iOS UICollisionBehavior(碰撞行为) 部分

作者: 吃货_X | 来源:发表于2023-12-21 15:00 被阅读0次

遇到的问题:


截屏2023-12-22 14.52.28.png

前置情况:
边界是通过UIBezierPath画的一个圆弧+“直线”。

 let path = UIBezierPath()
path.addArc(withCenter: centerPoint, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
let lineToStartPoint = CGPoint(x: centerPoint.x + radius * cos(startAngle), y: centerPoint.y + radius * sin(startAngle))
//这儿是用直线直接连接。
path.addLine(to: lineToStartPoint)
path.close()

解决方法:

 let path = UIBezierPath()
path.addArc(withCenter: centerPoint, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
let lineToStartPoint = CGPoint(x: centerPoint.x + radius * cos(startAngle), y: centerPoint.y + radius * sin(startAngle))
//用弧线方式连接两个点,但是控制点也在两点直接的直线上,从而实现直线效果+碰撞反馈。
path.addQuadCurve(to: lineToStartPoint, controlPoint: CGPoint(x: centerPoint.x, y: lineToStartPoint.y))
path.close()

当然第一种情况,可以实现另外的一种“功能”。

相关文章

网友评论

      本文标题:iOS UICollisionBehavior(碰撞行为) 部分

      本文链接:https://www.haomeiwen.com/subject/bnxfndtx.html