シーンの切り替え

基本

1.SKSceneを基底クラスとするクラスを作成

@interface NewScene : SKScene
...
@end

2.シーンを切り替えたい箇所で

SKScene *scene1 = [NewSceneClass sceneWithSize:self.size]; // シーンのオブジェクトを作成
SKTransition *transition1 = [SKTransition flipHorizontalWithDuration:0.5]; // トランジションを作成
[self.view presentScene:scene1 transition:transition1];

例文

トランジション(シーン切り替えの視覚効果)を作成

SKTransition *transition1 = [SKTransition flipHorizontalWithDuration:0.5];

flipHorizontalWithDurationメソッド以外にも多くのトランジションがあります。トランジションの種類については下記「トランジションの種類」を参照してください。

シーンの切替

SKScene *scene = [[NewSceneClass alloc] initWithSize:self.size];
[self.view presentScene:scene transition:transition1];

トランジションを使わない時は、

[self.view presentScene:scene];

シーンの背景色の指定

self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; // 背景色を白に設定

ビューからシーンが取り除かれる直前に処理を行う時

- (void)willMoveFromView:(SKView*)view
{
// ここに処理を記述
}

トランジションの種類

クロスフェードを作成

crossFadeWithDuration:

水平方向ドアクローズ(左右からドアを閉じるように遷移)

SKTransition *transition1 = [SKTransition doorsCloseHorizontalWithDuration:1.0];

垂直方向ドアクローズ(上下からドアを閉じるように遷移)

SKTransition *transition1 = [SKTransition doorsCloseVerticalWithDuration:1.0];

水平方向ドアオープン(左右にドアを開くように遷移)

SKTransition *transition1 = [SKTransition doorsOpenHorizontalWithDuration:1.0];

垂直方向ドアオープン(上下にドアを開くように遷移)

SKTransition *transition1 = [SKTransition doorsOpenVerticalWithDuration:1.0];

ドアを開いて奥から出てくるように遷移

SKTransition *transition1 = [SKTransition doorwayWithDuration:1.0];

指定色にフェードして遷移

SKTransition *transition1 = [SKTransition fadeWithColor:[SKColor redColor] duration:1.0];

フェードアウトしてから遷移

SKTransition *transition1 = [SKTransition fadeWithDuration:1.0];

横方向を軸にフリップ(縦にくるっと回転して裏返るように遷移)

SKTransition *transition1 = [SKTransition flipHorizontalWithDuration:1.0];

縦方向を軸にフリップ(横にくるっと回転して裏返るように遷移)

SKTransition *transition1 = [SKTransition flipVerticalWithDuration:1.0];

指定した方向からかぶさって入ってくるように遷移

SKTransition *transition1 = [SKTransition moveInWithDirection:SKTransitionDirectionRight duration:1.0];

指定した方向に押し出すように遷移

SKTransition *transition1 = [SKTransition pushWithDirection:SKTransitionDirectionRight duration:1.0];

指定した方向へシーンを移動して遷移

SKTransition *transition1 = [SKTransition revealWithDirection:SKTransitionDirectionRight duration:1.0];

CIFilterを使用して遷移

SKTransition *transition1 = [SKTransition transitionWithCIFilter:filter1 duration:1.0];

SKTransitionDirectionUp 上へ
SKTransitionDirectionDown 下へ
SKTransitionDirectionRight 右へ
SKTransitionDirectionLeft 左へ