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

2020年6月16日

シーンエディタで非表示アクション

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

Hide Action

 

Hide Actionはノードを非表示にするアクションで、Unhide Actionは非表示になっているノードを表示するアクションである。

現在非表示かどうかはノードのhiddenプロパティで確認でき(true:非表示、false:表示)、このアクションを呼び出すことでhiddenプロパティが変更される。

ちなみに、ノードを非表示にするだけなら、Hide Actionを使わなくてもhiddenプロパティの値を変更するだけでも表示、非表示を切り替えられる。

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

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

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

spritekit_center_node

 

Hide Action

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

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

Hide Actionをタイムラインに追加する

 

以下は実際のプレイ動画。シーン切り替えから2秒後に鳥が消えた。このように、フェードアウトのように徐々に薄くなって消えるのではなく、アクションが実行された瞬間に鳥は非表示になる。

 

アトリビュートインスペクタの設定項目を説明する。

Start Time

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

 

Duration

アクションの所要時間を指定する。所要時間の長さに関わらず、アクションが実行された瞬間に非表示になる。なので、所要時間は他のアクションと組み合わせるときのタイミングの調整に用いることになる。

ちなみに、上記と同じ動きをソースコードで実装するにはTestScene.swiftを以下のコードに変更する。

 

UnHidden Action

非表示のノードを表示するアクションなので、表示されているノードに対してこのアクションを実行しても何も変わらない。

そこで、UnHide Actionを実行する前に、Hide Actionを実行したり、hiddenプロパティをtrueに設定してノードを消しておく必要がある。

実際にやってみよう。先ほど追加したHidden Actionの設定値をStart Time「0」、Duration「1.0」に変更する。そのあとにUnHide Actionを追加し、Start Timeに「2」、Durationに「2」を入力する。

Unhide Actionを追加する

 

以下は実際のプレイ動画。鳥が現れた。。

 

上記と同じ動きをソースコードで実装するには、TestScene.swiftを以下のコードに変更する。

 

非表示にするときにalphaプロパティは変更されないので、透過されているノードのアルファ値を気にせずに表示、非表示の切り替えができるのが嬉しい。