Swift:如何让游戏中的角色只有落地后才能跳跃?

Luy*_*yer 5 ios sprite-kit swift

我正在开发一款游戏,我的角色可以从一个陆地跳到另一个陆地。我已经把所有事情都做好了,除了我剩下的问题是,如果你继续点击屏幕,他可以永远跳跃。我希望他必须先落地才能再次跳跃。

import SpriteKit
import GameplayKit

class GameScene: SKScene, SKPhysicsContactDelegate {
    struct PhysicsCatagory {
        static let Knight : UInt32 = 0x1 << 1
        static let land : UInt32 = 0x1 << 2
    }

    var Knight = SKSpriteNode()
    var land = SKSpriteNode(imageNamed: "CJLand4")
Run Code Online (Sandbox Code Playgroud)

这是我当前的代码,让他跳了起来:

Knight.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
Knight.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 325))
Run Code Online (Sandbox Code Playgroud)

我把它放在下面touchesBegan,它增加了重力,让他一冲动就可以跳跃。但我只希望他每次落地时都能跳一次。如果可以的话请帮忙。

Ste*_*ves 0

只需将一个 BOOL 属性添加到您的场景中,称为类似的isJumping初始化为 的属性false

然后,touchesBegan检查是否isJumping属实。如果不是,则执行跳转并设置isJumpingtrue

当跳跃结束时(骑士接触地面),设置isJumpingfalse