【Swift】SpriteKitの使い方。シーンエディタでノードの回転アクションを設定する。(Swift 2.2、XCode 7.3)

2020年6月16日

シーンエディタで回転

本記事ではSpriteKit Sceneファイルの編集画面(シーンエディタ)で設定できるRotate ActionとRotateToAngle Actionについて説明する。

Rotate Action

 

Rotate ActionとRotateToAngle Actionは、シーンに配置したノードを回転させるアクションである。

SpriteKit Sceneファイル(以下、SKSファイル)の作り方については次の記事を参照されたし。⇒「SpriteKit Sceneファイルの使い方

実際にノードにアクションを追加して回転させてみよう。以降の手順を行う前のXcodeプロジェクトをGitHubに置いたので、試してみる方はご利用下さい。⇒「テスト用プロジェクト

事前準備では、背景と鳥のノードをSKSファイルのシーンに追加しておいた。

spritekit_center_node

 

Rotate Action

下図赤枠のSKSファイルを選択してシーンエディタを開く。Animate横のボタン(黄緑枠)を押してタイムラインを表示する。水色枠のオブジェクトライブラリボタンを押して部品一覧を表示し、ドラッグ&ドロップで「Rotate Action」を鳥ノードのタイムラインまで運ぶ(紫矢印)。

黄枠のアトリビュートインスペクタボタンを押して設定画面を表示し、Start Timeに「2」、Durationに「2」、Timing Functionに「Linear」、Degreesに「90」を入力する。

Rotate Actionを追加する

 

以下は実際のプレイ動画。鳥ノードが左回りに90度回転した。

アトリビュートインスペクタの内容を説明する。

Start Time

シーンが切り替わったタイミングから何秒後にアクションを実行するかを指定する。

 

Duration

アクションの所要時間を指定する。

 

Timing Function

回転の速さを以下のの4つから選択する。項目名は「Timing Mode」の間違いと思われる。

設定名 説明
Linear 一定速度で回転する。
Ease In 加速しながら回転する。
Ease Out 減速しながら回転する。
Ease In, Ease Out 前半は加速し、後半は減速しながら回転する。

 

Degrees

回転角度を指定する。アンカーポイントを中心に回転し、プラスを指定した場合は左回り、マイナスを指定した場合は右回りになる。⇒「アンカーポイントとは

回転の例

 

360度を超えた場合は一周を超えて回る。以下の動画は、Degreesに900度を指定して実行した結果。900 ÷ 360 = 2.5周回転する。

 

このアクションは回転を追加するアクションである。例えば、90度回転のアクションを3回実行した場合は270度回転することになる。

ちなみに、上記と同じ動きをソースコードで実装するにはTestScene.swiftを以下のコードに変更する。ソースコードの場合は角度にラジアンを指定する。

 

RotateToAngle Action

Rotate Actionは回転を追加するアクションなのに対し、RotateToAngle Actionはノードが非回転の状態を0度として、指定角度まで回転するアクションである。なので、同じ角度の回転を連続で実行しても意味はない。

以下の動画は、-90度回転のアクションを複数実行した結果。-90度から動かない。

 

以下の動画は1回目「-90度」、2回目「90度」のアクションを実行した結果。

 

ソースコードで実装する場合は、先ほどのソースコードのアクション作成箇所を以下のように変更する。