私はSwiftとSpriteKitを使ってアプリケーションを構築しています。アプリは、画面のサイズとまったく同じSKSpriteNodeを読み込んで、画面を正確に覆うように配置します。しかし、ユーザーはこのSKSpriteNodeを好きなだけ移動してズームすることができます。私はSKSpriteNodeの絶対位置を気にしています。なぜなら、ノードがあまり動かされないと、私はそれを中心に戻したり、画面の端に「スナップ」したいからです。 (SKSpriteNodeは最終的にマップを保持します)。SpriteKitの奇妙さの拡大
ノードのスケールが正確に1.0の場合、位置の値は期待通りに機能します。しかし、(ピンチジェスチャーを使用して)ノードをズームし、スケールが1.0より大きくなると、位置の値は意味をなさない。私が何を意味しているかを説明するいくつかの画像があります。ここで
、あなたは非ズームノードはシーンと全く同じ大きさと位置を持っていることがわかります、それはXとYに配置された各地図だけでなく、シーンの両方0です:
しかし、この次の画像でわかるように、マップを拡大してより大きなSKSpriteNodeにすると、マップの左下隅が画面の左下隅に正確に配置されるように移動しますズームされたノードのXとYの値はオフです。私はXが0、Yが0と期待しますが、そうではありません。ここで何が起こっている
、そしてどのように私はズームノードの絶対位置を計算するのですか?そして、私が「絶対的な」ポジションを言うとき、おそらく私が意味することは、シーンに相対的なポジションですか?とにかく、あなたの考えは高く評価されます。
これらのプロパティからgetを削除できます。 – Whirlwind
getを削除しても、それでも計算されたプロパティですか?アップルデベロッパーガイドでは、Setのみがオプションであると述べています。 – zeeple
'get'を削除しても' return'のままにすると、同じ動作になります。そうすれば、これらのプロパティは計算され、get-onlyです。 – Whirlwind