2016-07-22 2 views
3

У меня есть некоторые текстуры ...SpriteKit SKSpriteNode движется

placeForJump = SKSpriteNode(imageNamed: "placeForJump") 
placeForJump.position = CGPoint(x: 512.346, y: 98.88) 
placeForJump.size = CGSize(width: 166.407, height: 197.762) 
placeForJump.zPosition = 2 
self.addChild(placeForJump) 

и характер ...

player = SKSPriteNode(imageNamed: "character") 
player.position... 
player.size... 
player.zPozition = 3 
self.addChild(player) 

Когда я касаюсь текстуры, где я могу прыгать, я хочу, чтобы мой персонаж прыгать на этом но я не знаю, как это сделать.

Когда я касаюсь текстуры с помощью местаForJump - мой персонаж прыгает на нем.

Пожалуйста, помогите.

ответ

2

Вы можете сделать это, обнаружив прикосновение к месту прыжка, а затем, когда пользователь коснется его, вы можете запустить действие, чтобы переместить там символ.

Чтобы обнаружить, если пользователь прикасается место для перехода вы можете добавить этот код в touchesBegan или touchesEnded функции:

for touch in touches { 
     let location = touch.locationInNode(self) 
     if placeForJump.containsPoint(location) { 
      print("It was touched") 
     } 
} 

Затем запустить действие на месте вы хотите использовать SKAction, как это :

player.runAction(SKAction.moveTo(placeForJump.position, duration: speed) 

Это переместит узел игрока к placeForJump в shortes возможный путь, так что если вы хотите, чтобы пойти выше, а затем на месте вы можете сделать это следующим образом:

let highPoint = CGPoint(x: player.position.x + 50, y: player.position.y + 100) 

let moveUp = SKAction.moveTo(highPoint, duration: speed) 
let moveDown = SKAction.moveTo(placeForJump.position, duration: speed) 
player.runAction(SKAction.sequence([moveUp, moveDown]) 

Надеюсь, что это поможет

+0

Здравствуйте! Ваш ответ был действительно полезен. Большое спасибо. И особое спасибо по этой части кода: let highPoint = CGPoint (x: player.position.x + 50, y: player.position.y + 100) let moveUp = SKAction.moveTo (highPoint, продолжительность: скорость) let moveDown = SKAction.moveTo (местоForJump.position, продолжительность: скорость) player.runAction (SKAction.sequence ([moveUp, moveDown]) –

Смежные вопросы