【问题标题】:XCode, SpriteKit: How do I trigger two actions with just touch?XCode,SpriteKit:如何通过触摸触发两个动作?
【发布时间】:2016-04-17 23:40:41
【问题描述】:

我的简单游戏理念坚持一个节点的大小增长,达到一定大小,然后回到其原始大小并循环。我有它,所以一旦我触摸屏幕,就会触发。我想要它,所以在我第一次触摸它并触摸它一秒钟后,即使它处于增大或减小的中间,我也希望它切换到它正在执行的相反动作。例如,如果它的大小增加并且我在它死亡之前点击它,它无论如何都会减小......这是我的代码。我需要做什么?干杯!

import SpriteKit

类 GameScene:SKScene、SKPhysicsContactDelegate {

let player = SKSpriteNode(color: .blackColor(), size: CGSize(width: 50, height: 50))

override func didMoveToView(view: SKView) {

    backgroundColor = UIColor.whiteColor()

    self.player.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
    addChild(self.player)

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

    //SCALE//

    let scaleUp = SKAction.scaleTo(6.0, duration: 1)
    let scaleDown = SKAction.scaleTo(1.0, duration: 1)

    let scaleUpGroup = SKAction.group([scaleUp])
    let scaleDownGroup = SKAction.group([scaleDown])

    let scaleUpAndDownSequence = SKAction.sequence([scaleUpGroup, scaleDownGroup])

    let loop = SKAction.repeatActionForever(scaleUpAndDownSequence)

    self.player.runAction(loop, withKey: "scalingUpAndDown")

}

}

【问题讨论】:

    标签: sprite-kit swift2


    【解决方案1】:

    一个可能的解决方案是使用布尔值作为一种切换开关。创建一个名为“isReversed”或其他名称的变量,并创建一个切换顺序的序列。

    let scaleDownAndUp = SKAction.sequence([scaleDownGroup, scaleUpGroup])
    let reverseLoop = SKAction.repeatActionForever(scaleDownAndUp)
    
    var isReversed = false
    
     if !isReversed {
        self.player.removeActionForKey("scalingDownAndUp")
        self.player.runAction(loop, withKey: "scalingUpAndDown")
        isReversed = true
    } else {
        self.player.removeActionForKey("scalingUpAndDown")
        self.player.runAction(reverseLoop, withKey: "scalingDownAndUp")
        isReversed = false
    }
    

    这将在您点击屏幕时检查 isReversed,执行正确的操作,然后将 isReversed 切换到其备用状态。

    我没有对此进行测试,但如果有些地方有点不对劲,那么总体思路是合理的,应该很容易实现。

    【讨论】:

    • 干杯。头号人物。稍后我会检查一下,如果它有效,我会告诉你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多