使用Swift(SpriteKit)检测触摸压力(力量)

3

我有一个在Xcode上使用Swift编写的游戏,其中有一个SKShapeNode跳跃。然而,我希望这个跳跃与玩家的触摸相对应。因此,轻触将得到小跳跃,而更大力度的触摸将得到更高的跳跃。如何实现这一点(请注意,我不想要任何3D触摸选项)?

1个回答

1
通常,在游戏中,这种事情是通过计时按键并相应地改变跳跃高度来完成的(这也是为什么在二维平台游戏中使用物理学对于这种事情很棘手的原因)。
像《超级马里奥》这样的游戏是这样做的:当玩家按下触摸屏时,跳跃动作就开始执行。然后在一定时间后(当角色跳到一半时),检查触摸屏是否仍处于按下状态。如果是,则可以使跳跃动画继续向上。如果释放了触摸屏,则开始将跳跃动作降下。
这样,短触摸是小跳跃,而长触摸则是高跳跃。
如果你有一个名为 smallJumpActionbigJumpAction 的动作,那么你可以将其分解成更小的部分...... beginJumpAction 立即触发,然后是 smallJumpEndActionbigJumpEndAction
这可以用序列动作来实现......
let beginJumpAction = //move the player upwards slightly
let smallJumpEndAction = //begin to move the player down
let bigJumpEndAction = //move the player up a bit more and then move down

let blockAction = SKAction.run {
    if touchStillDown {
        player.runAction(bigJumpEndAction)
    } else {
        player.runActgion(smallJumpEndAction)
    }
}

player.runAction(SKAction.sequence([beginJumpAction, blockAction])

无论如何,总有许多方法来解决这个问题 :)


非常感谢!这正是我所思考的,你完美地表达了我的想法!谢谢! - Frinor53

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接