• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[原创]Swift+Sprite Kit中文教程第四篇

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

很幸运也很开心受到官方微博推荐,所以继续努力更新,逐渐完善这个小游戏。

添加分数

既然能够击杀敌人了,下面我们计算玩家获得的分数。
类的属性列表中添加var score:UInt32 = 0
然后添加一个标签,用来显示分数。score下面添加:
var scoreLabel:SKLabelNode!
didMoveToView中,将这个label初始化好:

scoreLabel = SKLabelNode(text: "SCORE:0")
scoreLabel.position = CGPointMake(size.width * 0.5, size.height - 50)
addChild(scoreLabel)

然后在打印enemy die的地方,将print替换为

score++
scoreLabel.text = "SCORE:\(score)"

运行一下,是不是很简单呢?文字节点的fontColor/fontName/fontSize这里不赘述了,大家可以自己微调。

玩家阵亡

下面添加玩家阵亡的代码。
首先,在plane上添加刚体,结构和敌人、子弹类似:

plane.physicsBody = SKPhysicsBody(rectangleOfSize: plane.size)
plane.physicsBody?.categoryBitMask = PlayerCategory
plane.physicsBody?.collisionBitMask = 0
plane.physicsBody?.contactTestBitMask = EnemyCategory

然后在didBeginContact中添加:

if contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask == PlayerCategory | EnemyCategory{
   print("player die")
}

游戏重置

然后我们想想,玩家死亡之后,如何重置游戏呢?首先重置积分,然后重置玩家位置,最好中间再有一个间隔,不要玩家消失之后立即开始,缓冲几秒钟。这几秒钟里,子弹和敌人停止出现。
那么我们再加一个gameOver的bool型变量在类属性中
var gameOver:Bool = false,然后添加一个函数,重置游戏:

func resetGame(){
    gameOver = false
    
    score = 0
    scoreLabel.text = "SCORE:\(score)"
    
    plane.position = CGPointMake(size.width * 0.5, size.height * 0.5)
    addChild(plane)
}

最后将打印player die的部分修改为:

if contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask == PlayerCategory | EnemyCategory{
    print("player die")
    gameOver = true
    
    contact.bodyA.node?.removeFromParent()
    contact.bodyB.node?.removeFromParent()
    
    runAction(SKAction.sequence([SKAction.waitForDuration(3), SKAction.runBlock({
        self.resetGame()
    })]))
}

这里用了一个动作序列,等待三秒钟,然后调用了重置游戏函数。

将update函数中的两个if条件,填上 && !gameOver条件,就大功告成啦。

添加简单UI

下面的部分需要一些storyboard基础了。说起来,我个人觉得storyboard用来写游戏UI真的是代码洁癖患者的福音,图片、字体都能非常方便的调整,自适应的开发更是无人能敌。
打开Main.storyboard文件,然后从右侧一个铜钱形状的面板中(object library),拖拽一个普通的View Controller面板,然后命名为Begin View Controller,将初始界面的指向箭头拖拽到这个新添加的controller中。
在这个Begin面板中,拖拽一个button组件进去,修改文字为play,调整一下字体字号,在右下角的align面板中,做一个竖直和水平的居中处理,如图:

然后在按钮上选右键,将action拖拽到我们的游戏视图中,跳转方式选择present modally,这样就大功告成了。看一下完整版吧:

添加完自适应之后,最左侧会有一些constraints条件。中间的椭圆圈出了初始viewController的指向,添加按钮点击跳转以后,最右侧椭圆处会有跳转标记。不复杂吧,需要更多了解的朋友可以留言,或者网上搜索storyboard自适应、跳转等相关知识。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift UIImage加载远程图片和圆角矩形发布时间:2022-07-14
下一篇:
如何才能编写高性能的 Swift 代码发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap