前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新年开工啦,放个小烟花庆祝一下

新年开工啦,放个小烟花庆祝一下

作者头像
HelloWorld杰少
发布2022-08-04 14:40:32
5960
发布2022-08-04 14:40:32
举报
文章被收录于专栏:HelloWorld杰少

1前言

2022年大年初八,正式开工大吉啦!我的技术输出路线也准备在今天正式开始营业。首先咱们今天就用 Apple 的 SpriteKit 2D 引擎给大家画一个小烟花吧!

2SpriteKit 简单入门

SpriteKit 是苹果官方推出的 2D 游戏开发引擎。它利用 Metal 来实现高性能渲染,同时提供简单的编程界面,使创建游戏变得容易。

工程创建

在 Xcode 中新建 Game 工程,游戏类型选择 SpriteKit。

image

image

配置粒子文件

将事先准备好的粒子素材加入到工程之中。

image

image

image

image

生成粒子对象

初始化 SKSpriteNode 对象,并为它加上粒子特效,代码如下:

代码语言:javascript
复制
func generateNewSpriteNode(color: UIColor) -> SKSpriteNode{
        let node = SKSpriteNode(color: color, size: CGSize(width: 30, height: 30))
        node.position = CGPoint(x: 0, y: -500)
        node.physicsBody = SKPhysicsBody(circleOfRadius: 30)
        node.physicsBody?.isDynamic = true
        node.physicsBody?.restitution = 0
        
        let fire = SKEmitterNode(fileNamed: "Fire")
        fire?.targetNode = self
        fire?.particleColorBlendFactor = 1.0
        fire?.particleColorSequence = nil
        fire?.particleColor = color
        node.addChild(fire!)
        
        self.addChild(node)
        
        return node
    }

接下来就是要如何将节点发射出去,我们可以使用 applyImpulse 函数,为节点添加某一方向的脉冲力。

为了让节点能够像烟花一样散开,可以采用随机角度的发射方式,给节点施加脉冲,代码如下:

代码语言:javascript
复制
func fire(){
        // create particle
        let random = Int(arc4random_uniform(UInt32(self.colors.count)))
        let node: SKSpriteNode = generateNewSpriteNode(color: colors[random])
        let randomAngle = Int.random(in: -100...100)
        node.physicsBody?.applyImpulse(CGVector(dx: randomAngle, dy: 300))
    }

计时器

开启一个定时器,让节点能够每隔一段时间就自动发射节点,让烟花看起来更饱满更绚丽,代码如下:

代码语言:javascript
复制
 // 定时器
        Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { time in
            self.fire()
        }

好了,一个小烟花就做好了,来看下效果吧!

image

3最后

本篇文章到此就结束了,虽然篇幅比较短,但是里面却包含了游戏客户端引擎的一些常用知识点,粒子特效,物体碰撞,刚体,向量等。这些内容和我们日常接触的 iOS 开发还是有些区别的,感兴趣的同学可以自己创建一个工程体验一下。最后,新的一年祝大家开工大吉,一帆风顺,升职加薪,Bug 全部退散。

项目地址:https://github.com/ShenJieSuzhou/Fireworks

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloWorld杰少 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1前言
  • 2SpriteKit 简单入门
    • 工程创建
      • 配置粒子文件
        • 生成粒子对象
          • 计时器
          • 3最后
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档