Ios SpriteKit手势问题
所以我一直在尝试在这个战术/益智游戏中实现一个类似于megaman战网的tile系统。然而,我似乎无法通过滑动手势将精灵移动到所需的距离 相反,这些手势最终会将精灵移动到视图的左下角。在那个角落里,手势似乎仍然没有按照配置进行操作 为什么精灵会移到左下角 代码如下: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
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。发送方将是调用该方法的手势识别器。