いま、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は基礎的な描画しかできないので、

画面を作り込むためでなく、何か別の活用法があるのだろうなと思います。