0
点赞
收藏
分享

微信扫一扫

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


前言

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

SpriteKit 简单入门

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

工程创建

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

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

新年开工啦,放个小烟花庆祝一下_网易云音乐_02

配置粒子文件

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

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

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

新年开工啦,放个小烟花庆祝一下_二叉树_05

新年开工啦,放个小烟花庆祝一下_网易云音乐_06

生成粒子对象

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

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 函数,为节点添加某一方向的脉冲力。

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

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))
}

计时器

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

// 定时器
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { time in
self.fire()
}

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

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

最后

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

项目地址:​​github.com/ShenJieSuzh…​​

我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有👍 有动力
  2. 关注公众号--- ​​HelloWorld杰少​​,第一时间推送新姿势

最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**

举报

相关推荐

0 条评论