this is the first time I am working with Swift SpriteKit and I am having difficulty understanding how can implement the movement of a SKSpriteNode touch other SpriteNodes that are arrows. I have positioned the images where I need to be, but when pressing one of the arrows the image doesn't move. I've looked for solutions and can't seem to find one.
import SpriteKit
import GameplayKit
class GameScene: SKScene {
private var label : SKLabelNode?
private var spinnyNode : SKShapeNode?
let monkey = SKSpriteNode(imageNamed: "monkey")
let lArrow = SKSpriteNode(imageNamed: "leftArrow")
let rArrow = SKSpriteNode(imageNamed: "rightArrow")
let uArrow = SKSpriteNode(imageNamed: "upArrow")
let dArrow = SKSpriteNode(imageNamed: "downArrow")
override func didMove(to view: SKView) {
monkey.size = CGSize(width: 200, height: 140)
monkey.position = CGPoint(x: view.frame.width - 300, y: view.frame.height-160)
lArrow.position = CGPoint(x: view.frame.width-350, y: view.frame.height-600)
lArrow.size = CGSize(width: 80, height: 50)
rArrow.position = CGPoint(x: view.frame.width-260, y: view.frame.height-600)
rArrow.size = CGSize(width: 80, height: 50)
uArrow.position = CGPoint(x: view.frame.width-305, y: view.frame.height-540)
uArrow.size = CGSize(width: 50, height: 80)
dArrow.position = CGPoint(x: view.frame.width-305, y: view.frame.height-660)
dArrow.size = CGSize(width: 50, height: 80)
self.addChild(lArrow)
self.addChild(rArrow)
self.addChild(uArrow)
self.addChild(dArrow)
self.addChild(monkey)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in (touches) { //---(1)
let positionInScene = touch.location(in: self)
let touchedNode = self.atPoint(positionInScene)
if let name = touchedNode.name { //---(2)
if name == "leftButton" {//---(3)
//move to left
let moveAction: SKAction = SKAction.moveBy(x: 0, y: 15, duration: 1)
monkey.run(moveAction)
}
if name == "rArrow" { //---(4)
//move to right
let moveAction: SKAction = SKAction.moveBy(x: 15, y: 0, duration: 1)
monkey.run(moveAction)
}
}
}
}
Is there another function to use to move the SpriteNode because it doesn't go through statement(2)