Ios SpriteKit手势问题

Ios SpriteKit手势问题,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,所以我一直在尝试在这个战术/益智游戏中实现一个类似于megaman战网的tile系统。然而,我似乎无法通过滑动手势将精灵移动到所需的距离 相反,这些手势最终会将精灵移动到视图的左下角。在那个角落里,手势似乎仍然没有按照配置进行操作 为什么精灵会移到左下角 代码如下: class GameScene: SKScene { var mageNodeOne: Mage? //Swipe gesture handlers func swipedRight(sender:UISwipeGestureR

所以我一直在尝试在这个战术/益智游戏中实现一个类似于megaman战网的tile系统。然而,我似乎无法通过滑动手势将精灵移动到所需的距离

相反,这些手势最终会将精灵移动到视图的左下角。在那个角落里,手势似乎仍然没有按照配置进行操作

为什么精灵会移到左下角

代码如下:

class GameScene: SKScene {

var mageNodeOne: Mage?

//Swipe gesture handlers
func swipedRight(sender:UISwipeGestureRecognizer) {
    mageNodeOne!.position = CGPointMake(self.position.x + 115, self.position.y)
    println("swiped right")
}

func swipedLeft(sender:UISwipeGestureRecognizer) {
    mageNodeOne!.position = CGPointMake(self.position.x - 115, self.position.y)
    println("swiped left")
}

func swipedUp(sender:UISwipeGestureRecognizer) {
    mageNodeOne!.position = CGPointMake(self.position.x, self.position.y + 220)
    println("swiped up")
}

func swipedDown(sender:UISwipeGestureRecognizer) {
    mageNodeOne!.position = CGPointMake(self.position.x, self.position.y - 220)
    println("swiped down")
}

//Scene Setup
override func didMoveToView(view: SKView) {

    // Add gesture recognizers to view
    let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
    swipeRight.direction = .Right
    view.addGestureRecognizer(swipeRight)

    let swipeLeft:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedLeft:"))
    swipeLeft.direction = .Left
    view.addGestureRecognizer(swipeLeft)

    let swipeUp:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedUp:"))
    swipeUp.direction = .Up
    view.addGestureRecognizer(swipeUp)

    let swipeDown:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedDown:"))
    swipeDown.direction = .Down
    view.addGestureRecognizer(swipeDown)

    // Add tiles to view
    var tileSpacerOne = SKSpriteNode(imageNamed: "TileSpacer")
    tileSpacerOne.position = CGPoint(x: 508, y: 388)
    tileSpacerOne.zPosition = -1
    self.addChild(tileSpacerOne)

    var tileOne = SKSpriteNode(imageNamed: "TileExampleOne")
    tileOne.position = CGPoint(x: 350, y: 608)
    self.addChild(tileOne)

    var tileTwo = SKSpriteNode(imageNamed: "TileExampleOne")
    tileTwo.position = CGPoint(x: 350, y: 388)
    self.addChild(tileTwo)

    var tileThree = SKSpriteNode(imageNamed: "TileExampleOne")
    tileThree.position = CGPoint(x: 350, y: 168)
    self.addChild(tileThree)

    var tileFour = SKSpriteNode(imageNamed: "TileExampleOne")
    tileFour.position = CGPoint(x: 665, y: 608)
    self.addChild(tileFour)

    var tileFive = SKSpriteNode(imageNamed: "TileExampleOne")
    tileFive.position = CGPoint(x: 665, y: 388)
    self.addChild(tileFive)

    var tileSix = SKSpriteNode(imageNamed: "TileExampleOne")
    tileSix.position = CGPoint(x: 665, y: 168)
    self.addChild(tileSix)

    // Add mage to view
    mageNodeOne = Mage(imageNamed: "MageOne")
    mageNodeOne!.position = CGPointMake(667,475.5)
    addChild(mageNodeOne!)
}

为什么要将精灵移动到
self
+115的位置,而不是
mageNodeOne的当前位置+115

例如:

 CGPointMake(self.position.x + 115, self.position.y)
应该是

 CGPointMake(mageNodeOne.position.x + 115, mageNodeOne.position.y)

修好了,谢谢!我真不敢相信我没想到会那样做。我猜“self”引用的是视图或手势识别器本身?发送方应该是手势,因为它是作为参数传递的。self引用您所在类的实例。因此,在本例中,游戏场景将是self。发送方将是调用该方法的手势识别器。