swift歴3ヶ月の初心者です。
現在ルーレットを作成しているのですがルーレットの扇型の図形と止まった場所を示す針との当たり判定に試行錯誤しています。インターネットにて様々な対応を試みたのですが解決出来なかったため投稿させていただきました。
swift
1//針 2 let needle = UIImageView() 3 needle.frame = CGRect(x:99, y:10, width:2, height:2) 4 needle.backgroundColor = UIColor.gray 5 6 checkpoint.addSubview(needle) 7 checkpoint.bringSubview(toFront: needle) 8 9//扇型の図形 10 var start: CGFloat = 0.0 11 for i in 0..<4 { 12 13 let end: CGFloat = start + ratios[i] 14 start = end 15 let path: UIBezierPath = UIBezierPath(); 16 17 path.move(to: CGPoint(x:chartCenter, y:chartCenter)) 18 path.addArc(withCenter: CGPoint(x:chartCenter, y:chartCenter), 19 radius: 100, 20 startAngle: start - CGFloat(M_PI) / 2.0, 21 endAngle: end - CGFloat(M_PI) / 2.0, 22 clockwise: true) 23 24 let sl: CAShapeLayer = CAShapeLayer() 25 sl.fillColor = type(of: self).color(num: i).cgColor 26 sl.path = path.cgPath 27 self.chart.layer.addSublayer(sl) 28 } 29 30//当たり判定 31 if needle.frame.intersects(chart.frame) { 32 print("Hit") 33 } else { 34 print("Not Hit") 35 }
おそらく、そもそもImageViewとShapeLayerの当たり判定を作ること自体が不可能と思うのですがこれといった手段が思いつくこともなく困っている状態です。
また今でしたら4種類の扇型をまとめて作成しているのですが一つ一つに当たり判定を分けたいとも考えています。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/15 13:26