前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >评分系统-能够计算游戏中的抽象数量

评分系统-能够计算游戏中的抽象数量

作者头像
iOSDevLog
发布2019-03-11 14:32:05
7130
发布2019-03-11 14:32:05
举报
文章被收录于专栏:iOSDevLog

在本节中,我们将实施评分系统。此功能将允许我们收集珠宝并将计数器的数量增加1.当满足一定数量时,我们会将我们的玩家发送到下一级别。

下载评分系统

要学习本教程,您将需要Xcode 9,您可以下载最终项目,以帮助您与自己的进度进行比较。

变量

让我们声明变量。在度量Measure之后 ,为Score添加新注释。然后,声明scoreLabel和** score**。

代码语言:javascript
复制
// Score
let scoreLabel = SKLabelNode()
var score = 0

设置分数标签 scoreLabel

didMove函数中,初始化位置,字体颜色,大小,字体和标签的对齐方式。然后,将节点添加到摄像机。

代码语言:javascript
复制
scoreLabel.position = CGPoint(x: (cameraNode?.position.x)! + 310, y: 140)
scoreLabel.fontColor = #colorLiteral(red: 0.9529411793, green: 0.6862745285, blue: 0.1333333403, alpha: 1)
scoreLabel.fontSize = 24
scoreLabel.fontName = "AvenirNext-Bold"
scoreLabel.horizontalAlignmentMode = .right
scoreLabel.text = String(score)
cameraNode?.addChild(scoreLabel)

分数函数

现在我们有标签集,我们需要一个函数来增加数量。在操作标记中,声明一个新函数并将其命名为:rewardTouch。在函数内部,让我们将得分+1并调用得分。

代码语言:javascript
复制
func rewardTouch() {
    score += 1
    scoreLabel.text = String(score)
}

分数限制

类似于玩家和陷阱之间的碰撞,当玩家触摸珠宝时,存在多个接触并且得分将增加超过一个的量。我们需要将碰撞限制在一个,所以每次玩家接触到宝石时,每个宝石的分数都会增加一个。在布尔分区中,声明一个变量并将其命名为:rewardIsNotTouched。

代码语言:javascript
复制
var rewardIsNotTouched = true

Game Loop部分中,将此新变量设置为true。

奖励的碰撞

碰撞标记中,在玩家和奖励之间添加新的碰撞匹配。声明if语句,如果节点名为jewelrewardIsNotTouched为true,则插入rewardTouch函数。将rewardIsNotTouched设置为false。

代码语言:javascript
复制
if collision.matches(.player, .reward) {

    if contact.bodyA.node?.name == "jewel" {
        contact.bodyA.node?.physicsBody?.categoryBitMask = 0
        contact.bodyA.node?.removeFromParent()
    }
    else if contact.bodyB.node?.name == "jewel" {
        contact.bodyB.node?.physicsBody?.categoryBitMask = 0
    }

    if rewardIsNotTouched {
        rewardTouch()
        rewardIsNotTouched = false
    }
}

珠宝的掩码

GameScene.sks中,移动玩家前面的宝石并更换其掩码。

宝石:

  • 分类掩码:4
  • 碰撞掩码:2
  • 字段掩码:默认
  • 接触掩码:2

运行模拟器,将玩家移动到宝石上,您将看到评分系统正常工作!

移除宝石

你可能已经注意到宝石仍在那里,即使它被触摸了。我们需要调用removeFromParent方法。在玩家和宝石之间的碰撞中,调用if语句中的方法。您需要尝试这两种情况之一并运行模拟器。当玩家触摸珠宝时,宝石将消失,而不是玩家。

结论

在本节中,我们学习了如何实施评分系统。您可以将此系统用于多个可数的功能,例如:健康,法力,经验,货币,积分......

原文: https://designcode.io/spritekit-scoring

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载评分系统
  • 变量
  • 设置分数标签 scoreLabel
  • 分数函数
  • 分数限制
  • 奖励的碰撞
  • 珠宝的掩码
  • 移除宝石
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档