Sprite kit 将节点钳制到屏幕边界

Sprite kit 将节点钳制到屏幕边界,sprite-kit,bounds,touchesmoved,Sprite Kit,Bounds,Touchesmoved,我在屏幕上有一个十字线,我可以用触摸移动它,如上图所示,但我的问题是我不知道如何防止它离开屏幕。有fmaxf和fminf但我不完全确定如何使用它们,如有任何帮助,将不胜感激 可以使用以下代码将节点限制在坐标内。以下代码仅检查精灵的位置是否在边界内。我假设这个位置在精灵的中心 override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { for touch: AnyObject in touches

我在屏幕上有一个十字线,我可以用触摸移动它,如上图所示,但我的问题是我不知道如何防止它离开屏幕。有
fmaxf
fminf
但我不完全确定如何使用它们,如有任何帮助,将不胜感激

可以使用以下代码将
节点
限制在坐标内。以下代码仅检查精灵的位置是否在边界内。我假设这个位置在精灵的中心

 override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

        for touch: AnyObject in touches {
            let location = touch.locationInNode(self)
            let previousLocation = touch.previousLocationInNode(self)

            var translation = CGPointMake(location.x - previousLocation.x, location.y - previousLocation.y)
crossHair.position = CGPointMake(crossHair.position.x  + translation.x * 3, crossHair.position.y + translation.y * 3)
   }
    }
覆盖功能触摸移动(触摸:NSSet,withEvent事件:UIEvent){
用于触摸:触摸中的任何对象{
let location=touch.locationInNode(自)
让previousLocation=touch.previousLocationInNode(自身)
var translation=CGPointMake(location.x-previousLocation.x,location.y-previousLocation.y)
变量位置x:CGFloat=crossHair.position.x+translation.x*3
变量positionY:CGFloat=crossHair.position.y+translation.y*3
如果位置X<0{
位置X=0
}
否则,如果位置X>self.size.width
{
位置X=自身尺寸宽度
}
如果位置y<0{
位置y=0
}
否则,如果位置>自身尺寸高度
{
位置Y=自身尺寸高度
}
crossHair.position=CGPointMake(位置X、位置Y)
}
}

获取十字线位置后,检查十字线是否在屏幕外:

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        let previousLocation = touch.previousLocationInNode(self)

        var translation = CGPointMake(location.x - previousLocation.x, location.y - previousLocation.y)
        var positionX : CGFloat = crossHair.position.x + translation.x * 3
        var positionY : CGFloat = crossHair.position.y + translation.y * 3

        if positionX < 0 {
            positionX = 0
        }
        else if positionX > self.size.width
        {
            positionX = self.size.width
        }

        if positionY < 0 {
            positionY = 0
        }
        else if positionY > self.size.height
        {
            positionY = self.size.height
        }

        crossHair.position = CGPointMake(positionX, positionY)

    }
}
var x=crossHair.position.x;
var y=十字线.position.y;
if(crossHair.position.x>self.size.width){
x=自身尺寸、宽度;
}
if(十字线位置x<0){
x=0;
}
if(十字线.position.y>self.size.height){
y=自身尺寸、高度;
}
if(十字线位置y<0){
y=0;
}
crossHair.position=CGPointMake(x,y);
var x = crossHair.position.x;
var y = crossHair.position.y; 
if(crossHair.position.x > self.size.width) {
  x = self.size.width;
}
if(crossHair.position.x < 0) {
 x = 0;
}
if(crossHair.position.y > self.size.height) {
  y = self.size.height;
}
if(crossHair.position.y < 0) {
 y = 0;
}

crossHair.position = CGPointMake(x,y);