桐柏天气,张凯丽-漫威宇宙巡游,漫威英雄爱好者社区

这是一个相似Flappy Bird的游戏,作者根本为咱们完成了一切风趣的东东,不过为了更富趣味性,本猫再加点料:在场景中主动生成一些金币。

运转本来的游戏画面如下(gif大图或许较慢):

下面本猫带领咱们一步一步把功用完善成型 ;)

首要咱们写一个小的coinsCreate办法,简略测验一下原型是否可行。在写这个办法之前请答应我先清晰两件事:

  • 1.金币的方位需求和岩石(rock)方位相照应,你没道理把金币放到岩石里边去,那个太反人类。一种办法是在rocksCreate办法里创立金币,不过由于我想把创立金币放在独自的办法里,所以只要糖皮质激素在创立rock时将岩石方位保存起来以备不时之需,So,翻开createRocks办法在核算rock方位的代码后边增加如下代码:
rockYPos = yPos + frame.midY
  • 2.由于在热情故事游戏进行中咱们实际上是把场景中一切东东向左移动来形成,玩家向右飞桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区行的幻觉,所以金币相同也要向左移动,可是这个移动速度要和rock相匹配,不然玩家就会觉毕棚沟得金币自己在空中飞呀飞,而不是“悬停”在空中。由于咱们不是在crateRocks里创立金币,所以有必要想办法核算出金币移动的速度。这其实比你幻想的简略,假如你还没忘了初中的数学公式:距离 = 时刻 x桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区 速度。咱们已知rock的移动距应昊茗离和时刻,所以能够很便利的核算出其移动的速度,在createRocks移动代码前面增加以下一句:
rockSpeed = (topRock.position.x - -endPos)/5.8

好了,现在在Gam清明假日eScene中增加上面三个实例变量:

var rockYPos:CGFloa岛风got?
var rockSpeed:CGFloat?

OK!咱们能够写创立金币的原型了,下面是代码:

func createCoins(){
if let yPos = rockYPos,let speed = rockSpeed{
let coin = SKSpriteNode(color: .orange, size: CGSize(width: 20, height: 60))
le水银t x桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区Pos = frame.width + coin.frame.width
coin.physicsBody = SKPhysicsBod莫斯科城外的晚上y(rectangleOf: coin.size)
coin.physicsBody?.isDynamic = fa闵思航lse
coin.position 桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区= CGPoin即热式电热水器t(x: xPos, y: yPos - 100)
coin.name = coinName
addChild(coin)
let endPos = frame.width + (coin.frame.width * 2)
let duration = (endPos - -endPos) / speed
let moveAction = SKAction.moveBy(x: -endPos, y: 0, duration: TimeInterval(durati桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区on))
let moveSeq = SKAction.sequence([moveAction,SKAction.removeFromParent()诸城气候])
coin.run(moveSeq)
}
}

咱们需求连绵不断的金币,所以再写一个包装器叶县气候预报调用createCoins办法:

func spawnCoins(){
let create = SKAction.ru明星裸n {[unowned self ] in
self.createCoins()
}
le麦饭石t wait1s =前史故事 SKAction.wait(forDuration: 1)
let wait2s = SKAction.wait(forDuration: 2)
let seq = SKAction.sequence([create,wait2s,create,wait1s])
let repeatForever = SKAction.repeatForever(seq)
run(repeatForever)
}

有人或许会问,为什么要煞费苦心的创立2个不南大碎尸案同的时刻距离(1s奇瑞路虎和2s),这是由于创立rock距离是3s,为了不在rock主体中创立金币,咱们用了如上距离。

在游戏开端的闭包中增加咱们刚创立的办法:

let activatePlayer = SKAction.run {[unowned self] in
self.player.physicsBody?.iabpsDynamic = true
self.createScore()
self.spawnRocks()
//新加如下一行
self.spawnCoins()
}

OK,咱们运转游戏看看作用:

看到了么?上图中橘色的长方型便是金币的雏形.

现在根本作用现已成型了,可是咱们的小飞桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区机现在丁谷村还不能“吃”金币桐柏气候,张凯丽-漫威世界巡游,漫威英豪爱好者社区,不然自己会爆破哦!

并且那些“丑恶”的长方体很难让人把它和金币挂上钩吧?

咱们将在下一篇中持续咱们激动人心的重构之旅。是滴,看着自己的效果逐步成型确实很热血汹涌,下篇见。

第二篇在此

 关键词: