いま、SpriteKitに取り組んでいます。
Xcodeの新規プロジェクトに最初から組み込まれているサンプルコードを
昨日今日といろいろいじくりまわしていたら、こんなものが出来ました。
ハイネケンではありません
スプライトです。
指で触れたところを気泡がよけていきます。
衝突したら勝手に関数を呼んでくれるのかと思っていたのですが、やってみると、
物理シミュレーション(isDynamic)がオフの状態では反応させることができず、
しかしオンにすると気泡同士がぶつかり合ってはじけ飛んだり、
指をよける部分(SKShapeNode)が気泡に押されて、
上へすっ飛んでいってしまいました…![]()
どちらの isDynamicもオフのまま、指と気泡が衝突したときだけ
関数を呼んでくれたらいいのですが、結局その方法がわからず![]()
didEvaluateActionsの中に自前の衝突判定を組み込みました。
そういうわけで、指をよける部分に SKShapeNodeは無く、
単に CGPointだけを保持しています。
気泡は1/80秒ごとに1つ出しています。これが1/100秒あたりで頭打ちとなり、
それ以上はノードの数に変化がありません。
一度に気泡を2つ出してやると、60fpsを保てなくなりました。
私などは8ビット世代なので、
リソースに対してものすごくドケチに生まれついているのですが、
これくらい贅沢な書き方をしても高速に処理してくれると、世界観が変わりますね。
私にもゲームが作れそう、作りたい、と思わせてくれます![]()
なんでも、Shape(形状)よりSprite(画像)のほうが処理は軽いそうです ![]()
演算しなくてもメモリを転送するだけでいいからでしょうね。
SKActionの scale(to size: CGSize, duration: TimeInterval)メソッドなどは、
SKSpriteNode以外では無視されるようです。
それでなくてもSKShapeNodeは基礎的な描画しかできないので、
画面を作り込むためでなく、何か別の活用法があるのだろうなと思います。