画面上のキャラクターを別のキャラクターに入れ替えます。
なくても何とかなりそうですが、宝箱を開ける演出とかしたいので一応用意しておきます。
まずは設定。
「これじゃ!」とメッセージを表示した後、replaceイベントでc2
というキャラクターをc3
に入れ替え。
その後またメッセージを表示。
という内容です。
{
"type" : "story",
"map" : "map_shop",
"events" : {
"c1" : {
"type" : "message",
"message" : {
"en" : "Here you are!",
"ja" : "これじゃ!"
},
"next" : "c1a"
},
"c1a" : {
"type" : "replace",
"from" : "c2",
"to" : "c3",
"next" : "c1b"
},
"c1b" : {
"type" : "message",
"message" : {
"en" : "Take good care of it.",
"ja" : "お主の分身じゃ。大切にするんじゃぞ。"
},
"next" : "story_replace"
}
}
}
キャラクターの入れ替えは、SJMapNode
にメソッドを追加して対応。
- (void)replaceCharacterNodeFrom:(NSString *)fromName to:(NSString *)toName {
SKNode *fromNode = [self childNodeWithName:fromName];
SKNode *toNode = [self newCharacterNode:toName];
toNode.position = fromNode.position;
[fromNode removeFromParent];
[self addChild:toNode];
}
それをSJStoryScene
から呼び出します。
- (void)processEvent:(NSString *)name {
/* 省略 */
} else if ([event[@"type"] isEqualToString:@"replace"]) {
[[self mapNode] replaceCharacterNodeFrom:event[@"from"] to:event[@"to"]];
[self processEvent:event[@"next"]];
}
}
完成。
いい感じです。
ソースコード: sj-prototype-apps/SJRolePlaying at master · tnantoka/sj-prototype-apps