【问题标题】:How to make sprite jump higher/smaller depending on the amount of time touching screen?如何根据触摸屏幕的时间使精灵跳得更高/更小?
【发布时间】:2015-04-16 05:54:04
【问题描述】:

您好,我很难找到适用于我的精灵的正确代码,以便仅在录制时允许小跳,而当手指在屏幕上停留时间更长时允许跳高。 (请在下面找到当前代码)

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



    /* Called when a touch begins */

    if (gameOver == 0){

        //Player Begin Jumping.
        player.physicsBody?.applyImpulse(CGVectorMake(0, 200))
        player.runAction(SKAction .playSoundFileNamed("sounds/Jump.caf", waitForCompletion: true))

    }

}

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {

    if (gameOver == 0){

        //Player End Jump.
        player.physicsBody?.applyImpulse(CGVectorMake(0, -120))

【问题讨论】:

标签: swift sprite-kit game-physics


【解决方案1】:

您可以使用update-方法。并在您的 touchesBegan-method 中设置一个布尔值或类似的东西来显示您仍在屏幕上按下的update-method。例如:

//touchesBegan
touching = true

//update-method
if touching {
    player.physicsBody?.applyImpulse(CGVectorMake(0, 1))
}

//touchesEnded
touching = false

您必须更改 applyImpulse 以使其符合您的需求。

【讨论】:

  • 我不会投反对票,因为我认为这仍然是一个有效的答案,但是,为了将来参考,应该注意基于链接 IF 语句的方法,例如建议的 @ 987654326@,在游戏环境中可能会很快变得非常混乱,例如 "touching""sprite" 仍在空中导致无限跳跃除非使用另一个 boolean 来检查 "sprite" 是否已经在空中;或者如果另一个动作,如 "sliding" 会使跳跃变得不可能,那也需要检查,等等。 state-machine 解决方案会更好。
【解决方案2】:

其实很简单,这意味着当玩家放开屏幕时他会摔倒,如果他按住他会达到 200 否则他会摔倒

touches began {
    sprite.physicsbody.applyImpulse(CGVector(dx: 0 dy: 200)
}

touches eneded {
    sprite.physicsbody.applyImpulse(CGVector(dx: 0 dy: -57)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多