Edited at

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];