当前位置: 首页 > 面试题库 >

迅捷的Sprite Kit游戏:圆圈以顺时针方向消失了吗?在计时器上?

武博艺
2023-03-14
问题内容

好吧,所以我不知道它的名字,但是我有一个Sprite Kit游戏(
亚军游戏),当游戏结束时,将有一个“ Save me”按钮
和一个计时器,该计时器将相应地用完。计时器用完后,您将无法
再单击按钮并保存字符。

但是,我不想以文本形式显示此计时器-
如果您愿意,我希望有一个圆圈“自动展开”,并以计时器用完的速度消失
。即,当计时器达到0时,圆圈已完全消失。该
圆在按照顺时针运动消失由度度
定时器。


问题答案:

通过以固定间隔更改的path属性SKShapeNode,可以创建逐帧动画序列。要创建动画,设置该path属性为形状的顺序,与一个圆,两端开始什么也没有。您可以使用UIBezierPath(用于的包装器)CGPath通过以下步骤为动画创建形状:

  1. 将路径的“笔”移动到圆心
  2. 弧添加到与路径addArcWithCenter从startAngle到endAngle
  3. 在圆弧上与终点角相对应的点到中心的路径上添加一条线
  4. 更改endAngle固定金额
  5. 重复步骤1-4
    这是上述步骤的实现:

    override func didMove(to:SKView) {

    let circle = SKShapeNode(circleOfRadius: 50)
    circle.fillColor = SKColor.blue
    circle.strokeColor = SKColor.clear
    circle.zRotation = CGFloat.pi / 2
    addChild(circle)
    
    countdown(circle: circle, steps: 20, duration: 5) {
        print("done")
    }
    

    }

    // Creates an animated countdown timer
    func countdown(circle:SKShapeNode, steps:Int, duration:TimeInterval, completion:@escaping ()->Void) {
    guard let path = circle.path else {
    return
    }
    let radius = path.boundingBox.width/2
    let timeInterval = duration/TimeInterval(steps)
    let incr = 1 / CGFloat(steps)
    var percent = CGFloat(1.0)

    let animate = SKAction.run {
        percent -= incr
        circle.path = self.circle(radius: radius, percent:percent)
    }
    let wait = SKAction.wait(forDuration:timeInterval)
    let action = SKAction.sequence([wait, animate])
    
    run(SKAction.repeat(action,count:steps-1)) {
        self.run(SKAction.wait(forDuration:timeInterval)) {
            circle.path = nil
            completion()
        }
    }
    

    }

    // Creates a CGPath in the shape of a pie with slices missing
    func circle(radius:CGFloat, percent:CGFloat) -> CGPath {
    let start:CGFloat = 0
    let end = CGFloat.pi * 2 * percent
    let center = CGPoint.zero
    let bezierPath = UIBezierPath()
    bezierPath.move(to:center)
    bezierPath.addArc(withCenter:center, radius: radius, startAngle: start, endAngle: end, clockwise: true)
    bezierPath.addLine(to:center)
    return bezierPath.cgPath
    }



 类似资料:
  • 最后,是否可以重复使用相同的runnable(每个游戏会话1个),而不是每回合创建一个新的。

  • 问题内容: 我已经用Java创建了一个游戏,现在我只需要添加一个允许用户在60岁以下玩的计时器。我已经在互联网上进行搜索,找到了swing和util软件包的计时器。您能给我一种方法在我的游戏中使用它吗? 问题答案: 如果您想进行交互,可以使用和类: 因此,现在您有了一个计时器,可以触发另一个类的调用。现在,您可以安排它:

  • 问题内容: 我已经阅读了有关该主题的所有内容,但仍然无法弄清我的问题。我尝试在appdelegate的每个区域暂停游戏 在我的控制器中: 我知道pauseGame可以用,因为如果我在场景中用按钮切换它,它将停止游戏。即使我在将skview和场景加载到控制器中后立即暂停它们,游戏也不会在启动时暂停。在游戏中暂停游戏很容易。但是由于某种原因,每当我退出并恢复该应用程序时,游戏便会自行取消暂停。 我注意

  • 我想为我的简单数学游戏添加一个计时器。到目前为止,一切都很好,用户在按下按钮时会收到问题,并得到答案的反馈。我想给用户添加一个定时器,让用户看看回答乘法需要多少时间。这是我这个数学游戏原型的最后一部分。我希望定时器在用户点击“NYTT TAL”(瑞典语中的新数字)时启动,在用户点击“SVAR”(瑞典语中的应答)时停止。这是我的密码。

  • 本文向大家介绍Javascript实现秒表计时游戏,包括了Javascript实现秒表计时游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现秒表计时游戏的具体代码,供大家参考,具体内容如下 一、说明 本游戏页面设计分为左右两栏。左上为跑马灯,左下为计时器和”START”按钮;右上为排行榜,右下为游戏规则说明。 跑马灯用的是定时器,循环走一遍。计时器是从”00

  • 问题内容: 我正在设计一个简单的游戏,该游戏使用Java 2D和牛顿物理学。目前,我的主要“游戏循环”如下所示: 当指示实体更新自身时,它将根据当前施加在其上的力来调整其速度和位置。但是,我需要实体表现出其他行为。例如,如果“坏家伙”被玩家射击,则该实体应被销毁并从游戏世界中移除。 我的问题 :以面向对象的方式实现此目标的最佳方法是什么?到目前为止,我所见过的所有示例都将游戏循环整合到名为的类似的