iOS UICollisionBehavior(碰撞行为) 部分没有碰撞反馈

遇到的问题:


截屏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()

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容