Objective-C
SpriteKit
SceneKit
WatchKit
watchOS

WatchOS3 SceneKitやSpriteKitでサウンドを再生

More than 1 year has passed since last update.

WatchOS3からはSceneKitやSpriteKitを使用することができる
サウンドを再生させる方法はいろいろあるが
あくまでゲームを作成するのを目的でSceneKitやSpriteKitでサウンドを再生させる
ソースコードを公開する。
まだ試行錯誤なので時間があれば更新していきます。


*SceneKit

SCNActionでサウンドを鳴らす場合
使用用途はSEを鳴らす場合

InterfaceController.m
    SCNNode *soundNode = [SCNNode node];
    SCNAudioSource *sorce = [SCNAudioSource audioSourceNamed:@"ok.mp3"];
    SCNAction *action = [SCNAction playAudioSource:sorce waitForCompletion:true];
    [soundNode runAction:action];
    [scene.rootNode addChildNode:soundNode];

SCNAudioPlayerでサウンドを鳴らす場合
使用用途はBGMを鳴らす場合
注意)シミュレーターでは再生できても実機では再生されないしかしshouldStreamをtrueにすると再生できるようになる

InterfaceController.m
    SCNAudioSource *audioSource = [SCNAudioSource audioSourceNamed:@"battle1.mp3"];
    audioSource.loops = YES; //ループ
    audioSource.volume = 1.0; //ボリューム
    audioSource.positional = NO;
    //[audioSource load];
    audioSource.shouldStream = true; //true:再生時間が長い曲でも再生される
    SCNAudioPlayer *player = [SCNAudioPlayer audioPlayerWithSource:audioSource];
    [scene.rootNode addAudioPlayer:player];

*SpriteKit

SKActionでサウンドを鳴らす場合
使用用途はSEを鳴らす場合

InterfaceController.m
    SKAction *action = [SKAction playSoundFileNamed:@"ok.mp3" waitForCompletion:true];
    [spriteNode runAction:action];

SKAudioNodeでサウンドを鳴らす場合
使用用途はBGMを鳴らす場合

InterfaceController.m
    SKAudioNode *node = [[SKAudioNode alloc] initWithFileNamed:@"battle1.mp3"];
    node.autoplayLooped = true;
    [spritekitScene addChild:node];