2016-12-08 39 views
2

我正在尝试更改节点的速度。现在我的节点只是在屏幕上随意移动 - 非常基本的测试。我只是想让我的第一个节点(bubble1 - 参考代码)移动得更快一点,所以我可以再次改变速度等。感谢您的帮助。更改节点速度/ Swift 3.0

*现在我只想改变“bubble1”的速度,没有别的。我查看了其他文章,了解如何做到这一点,但没有一篇非常真实。所以我贴了我自己的。 =)

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 

//var simpleS = SKSpriteNode() 
var ball = SKSpriteNode(imageNamed: "Ball") 
var bubble = SKSpriteNode(imageNamed: "square") 
var bubble1 = SKSpriteNode(imageNamed: "square") 
var bubble2 = SKSpriteNode(imageNamed: "square") 
var bubble3 = SKSpriteNode(imageNamed: "square") 
var bubble4 = SKSpriteNode(imageNamed: "square") 


override func didMove(to view: SKView) { 

    //simpleS = self.childNode(withName: "simpleS") as! SKSpriteNode 

    //simpleS.physicsBody?.affectedByGravity = true 
    //simpleS.setScale(3.0) 

    ball.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    ball.setScale(0.1) 
    //self.addChild(ball) 

    bubble.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    bubble.setScale(0.3) 
    self.addChild(bubble) 

    bubble1.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    bubble1.setScale(0.3) 
    self.addChild(bubble1) 

    bubble2.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    bubble2.setScale(0.3) 
    self.addChild(bubble2) 

    bubble3.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    bubble3.setScale(0.3) 
    self.addChild(bubble3) 

    bubble4.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    bubble4.setScale(0.3) 
    self.addChild(bubble4)  
} 


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {   
    for touch in touches { 
     let location = touch.location(in: self) 

     //simpleS.run(SKAction.moveTo(x: location.x, duration: 0.5)) 
     //simpleS.run(SKAction.moveTo(y: location.y, duration: 0.5)) 

     ball.run(SKAction.moveTo(x: location.x, duration: 0.0)) 
     ball.run(SKAction.moveTo(y: location.y, duration: 0.0)) 

     bubble.run(SKAction.moveTo(x: location.x, duration: 0.3)) 
     bubble.run(SKAction.moveTo(y: location.y, duration: 0.3)) 

     bubble1.run(SKAction.moveTo(x: location.x, duration: 0.4)) 
     bubble1.run(SKAction.moveTo(y: location.y, duration: 0.4)) 

     bubble2.run(SKAction.moveTo(x: location.x, duration: 0.5)) 
     bubble2.run(SKAction.moveTo(y: location.y, duration: 0.5)) 

     bubble3.run(SKAction.moveTo(x: location.x, duration: 0.6)) 
     bubble3.run(SKAction.moveTo(y: location.y, duration: 0.6)) 

     bubble4.run(SKAction.moveTo(x: location.x, duration: 0.8)) 
     bubble4.run(SKAction.moveTo(y: location.y, duration: 0.8)) 
    } 
} 

回答

1

有几种方法可以做到这一点。

  1. 改变持续时间,因为这会加速它,但我不认为这就是你要求的。我想你想知道如何加快了SKAction ....

  2. 更改一个SKAction的执行率通过其速度性能

速度属性记录here.

您需要做一些事情来使这个值可以访问,并且可以唯一地寻找泡泡1

  1. 使bubble1的SKA为un ique,所以你可以控制它。有两种方法可以这样:

    • 给它一个独特的名字在它的“名称”属性,查找和发现
    • 有参考bubble1并解决其SKAction(一
  2. 告诉SKAction影响bubble1通过改变它。速度属性

跑得更快或者......你可以偷懒,只是调整任何给定的节点上的所有行动的速度值,与这个:https://developer.apple.com/reference/spritekit/sknode/1483036-speed

+0

谢谢!有效。 –