斯威夫特:如何使我的angular色在我的游戏中只能在他击中地面时跳跃?
我正在开发一个游戏,angular色从陆地跳到陆地。 我把所有的东西都做下来,除了我剩下的问题,就是如果你继续敲击屏幕,他可以永远跳跃。 我想要它,所以他必须在他能再次跳跃之前打倒地面。
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")
这是我现在的代码,让他跳跃:
Knight.physicsBody?.velocity = CGVector(dx: 0, dy: 0) Knight.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 325))
我有这touchesBegan
,它增加了引力,冲动,让他跳。 但是我只想让他每次打地都能跳一次。 如果可以的话请帮忙。
你可以检查垂直速度是否为0,如果着陆,骑士只会跳跃。 这真的取决于你正在寻找的跳跃types。
if Knight.physicsBody?.velocity.y == 0 { Jump() }
只需将一个BOOL属性添加到您的场景中,就像isJumping
被初始化为false
。
然后,在touchesBegan
检查isJumping
是否为true。 如果不是,执行跳转并将isJumping
设置为true
。
当跳跃结束(骑士已经接触地面),设置是isJumping
回到false
。