はじめに
こんにちは、fummicc1です。ふみっちって読みます。今回は、SpriteKit
を使って簡単なアニメーションを作ってみようと思います!
SpriteKit
とは
Appleが公式に用意しているゲームを作るためのフレームワークです。SceneKit
というものが似た部類のものでありますが、このSpriteKit
は2Dのゲームを作るものとなっています。
では、今回SpriteKit
で使う部品の説明を次にしていきます。
SKView
SKView
とはSKScene
を表示するためのものです。UIView
に対してキャストして使用します。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let skView = view as? SKView {
// キャストが成功したらここが呼ばれるので、シーンを追加していく。
}
}
}
SKScene
SKScene
とは表示する画面の1ユニットのことを指します。SKView
はそれを表示するためのものだと思って構いません。基本的にSpriteKit
ではSKView
ではなくSKScene
に次に説明するNode
と言われる名のついた部品を追加していきます。
以下は基本的なSKView
の使い方です。画面全体にSKScene
を表示しています。
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let skView = view as? SKView {
let scene = SKScene(size: skView.frame.size)
scene.backgroundColor = .red
skView.presentScene(scene)
}
}
}
すると、SKView
に赤色のシーンが表示されるようになります。
SK〇〇Node
ここでSpriteKit
の関門Node
を理解していきましょう。
Node
とはGoogle先生に聞いてみると...
ふむふむ...
結び目や節など正直よく分かりません。なので、子と覚えてください。SKScene(親)
に追加される子の部品なのでしっくりくると思います。
実際に、scene.addChild(node)
などというメソッドがあります。
このように一つのシーンは複数のノード(子)の集まりで構成されています。
サンプルアプリを作ってみる。
Xcode
からFile
>New
>Project
>Game
を選択します。名前はなんでもいいです。
作成したらActions.sks
というファイルは使わないので削除しましょう。
このようなファイル構成になってれば大丈夫です。
GameViewController
を編集。
まず、最初にUIViewController
を編集します。
かなりたくさんすでに書かれていますね。今回は使わないので以下のように編集しましょう。
import UIKit
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let skView = view as? SKView {
let scene = GameScene(fileNamed: "GameScene.sks")
skView.presentScene(scene)
}
}
}
let scene = GameScene(fileNamed: "GameScene.sks")
ではGameScene.sks
と呼ばれるファイルからシーンを取得しています。
では、次にGameScene.swift
ファイルを編集してみましょう。
これも使わないものが多いので、以下のように編集しましょう。
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
let blueCircle = SKShapeNode(circleOfRadius: 30)
blueCircle.fillColor = .blue
blueCircle.strokeColor = .blue
let biggerCircleAction = SKAction.scale(to: 5, duration: 1.0)
let smallCircleAction = SKAction.scale(to: 1, duration: 1.0)
let hideAction = SKAction.fadeAlpha(to: 0, duration: 1.0)
let allAction = SKAction.sequence([ biggerCircleAction, smallCircleAction, hideAction ])
blueCircle.run(allAction)
addChild(blueCircle)
}
}
SKAction.〇〇
で基本的なアニメーションはほぼ作れます。
種類 | 説明 |
---|---|
SKAction.scale | Nodeの大きさを変更します |
SKAction.fadeAlpha | Nodeの透明度を変更します |
SKAction.sequence | 引数の配列の要素を順番に実行していきます。同時にアニメーションはされず、1番目のものが終わったら2番目のものが行われます。 |
他にも、SKAction.move
やSKAction.rotate
などがあります。
〇〇.run
メソッドでアニメーションの実行を行えます。
addChild(〇〇)
で〇〇
というノードをシーンに追加できます。
これらを実行してみると、
アニメーションができました!
最後に
今回は、SpriteKitを使って簡単なアニメーションを作ってみました。
でも、本来はSpriteKitはゲームを作るものなので次回はPhysicsBody
を使った記事を書こうと思います。
SpriteKitの入門第一歩になればいいなと思います!
最後まで読んでいただきありがとうございました〜。