Swift初心者です。
現在xcode6.4 、swift、Scenekitを使ってテンプルランの様なラン系3Dアクションゲームのアプリを開発しております。
移動処理はSCNCameraNodeを固定し、背景(SCNNode)をSCNActionで動かしています。移動処理は直線・カーブ左右の三種類で、マップ生成時にマップ毎に移動方法を配列に格納し、1マップの移動が終わった場合(SCNActionRunblockでフラグを立て、SCNSceneRendererで判断)、次マップのアクションを実行するという処理を行っています。
このとき、SCNActionとSCNAction再実行までに微小なラグ(0.1秒未満)が発生し、一瞬止まっているように感じます。
移動を直線のみに限定し、SCNAction.repeatActionForeverで移動処理を行うとラグは発生しないようです。
ここで質問なのですが、この移動方法の問題点、もしくはランダムマップを生成し移動するようなアプリのアルゴリズムをご存知の方、よろしければご教授ください。具体策でなくとも参考になりそうなURL、もしくは些細な情報でも構いませんので、何卒宜しくお願い致します。
補足
微小なラグは2フレーム(1フレーム16ms程度)だったようで、原因の一つは移動処理を
SCNAction.sequence([移動,フラグ建てるランブロック])
としていたのですが、移動後、フラグを立てる処理に1フレーム使用していたようです。移動後、runBlockでフラグを建てるのではなく、現在アクションが実行中かどうか判断し、実行していなければ次の処理とすることで遅延を1フレーム改善できました。
もう1フレームの遅延は次の移動を指示しrunActionしてから実際に動き出すまでに1フレームかかっているようです。
あなたの回答
tips
プレビュー