3d 二进制运算符'-';不能应用于两个';CGFloat&x27;操作数

3d 二进制运算符'-';不能应用于两个';CGFloat&x27;操作数,3d,swift3,pow,3d,Swift3,Pow,我正在编写3D游戏,并尝试在提取的点击处理程序中编写表达式: override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) { for touch: AnyObject in touches { let touchPoint: CGPoint = touch.location(in: self) if (isTracking == true &am

我正在编写3D游戏,并尝试在提取的点击处理程序中编写表达式:

  override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) {

    for touch: AnyObject in touches {
        let touchPoint: CGPoint  = touch.location(in: self)

         if (isTracking == true && sqrtf(powf((touchPoint.x - thumbNode.position.x), 2) + powf((touchPoint.y - thumbNode.position.y), 2)) < size * 2)
        {...}
     }
  }
override func touchesMoved(touch:Set,带有事件:UIEvent!){
用于触摸:触摸中的任何对象{
让接触点:CGPoint=touch.location(in:self)
如果(isTracking==true&&sqrtf(powf((touchPoint.x-thumbNode.position.x),2)+powf((touchPoint.y-thumbNode.position.y),2))
但Xcode写入错误:

二进制运算符“-”不能应用于两个“CGFloat”操作数。

比尝试:

 var arg_3 = (touchPoint.x - self.anchorPointInPoints().x)
 var expr_3 = powf(Float(arg_3), 2)
 var arg_4 = (touchPoint.y - self.anchorPointInPoints().y)
 var expr_4 = powf(Float(arg_4),2)
 var expr_5 = expr_3 + expr_4
 var expr_6 = thumbNode.size.width

 if (sqrtf(Float(expr_5)) <= expr_6)
 {}
var arg_3=(touchPoint.x-self.anchorPointInPoints().x)
var expr_3=功率(浮动(arg_3),2)
var arg_4=(touchPoint.y-self.anchorPointInPoints().y)
var expr_4=功率(浮动(arg_4),2)
变量expr\u 5=expr\u 3+expr\u 4
var expr_6=thumbNode.size.width
如果(sqrtf(Float(expr_5))这是一条错误消息

powf
不接受
cgfault
s作为参数

创建一个
浮动

let x = Float(touchPoint.x - thumbNode.position.x)
powf(x, 2)

编辑:

解决办法1:

let y = Float(touchPoint.y - thumbNode.position.y)
let x = Float(touchPoint.x - thumbNode.position.x)
if (isTracking == true && sqrtf(powf(x, 2) + powf(y, 2)) < size * 2)
    {...}
让y=Float(touchPoint.y-thumbNode.position.y)
设x=Float(touchPoint.x-thumbNode.position.x)
if(isTracking==true&&sqrtf(powf(x,2)+powf(y,2))
解决办法2:

if (sqrtf(Float(expr_5)) <= Float(expr_6)) ...

if(sqrtf(Float(expr_5))您可以使用
pow
sqrt
获取并返回
CGFloat
,这是
CGPoint
中的值类型。这避免了在示例中使用任何类型的强制转换,因为所有内容都是
CGFloat

这有一些东西要给您…谢谢。我已经阅读了这个主题…谢谢您的想法,但它不是我的回答没有提到你的第二种方法(