問題タブ [skshapenode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - スプライト キット: 'Binary Rush' や 'Stay in the line' のような無限のゲーム背景を作成する方法は?
「 Binary Rush」や「Stay in the line 」のような無限のゲーム背景を作りたいです。背景は単純なトラックでもかまいません。ランダムなレーシング ロード トラックのようなものです。
現在、単一の SKShapeNode を使用してパスを描画し、lineWidth を大きな数値に設定しています。私var path = CGPathCreateMutable();
はランダムなトラックを作成するために使用します。トラックが 1 本のラインに制限されているため、明らかにこれは理想的なソリューションではありません。トラックをさまざまな幅で拡張したり、トラック内に障害物を追加したりしたいと思います.
私の質問は次のとおりです: 1. これらの 2 つのゲームの背景は単なる画像ですか?スクロールすると、ランダムな画像が読み込まれますか? 2. トラックの幅を変更したり、トラック内に障害物を追加したりできる柔軟性を備えたトラックをランダムに生成するにはどうすればよいですか? 3. これらのトラックの異なるセグメントをどのように組み合わせるか、無限に長いパスを作成しないと仮定します。異なるセグメントに分割し、セグメントが画面外にスクロールしたら removeFromParent する必要があります。
ありがとうございます!:)
ios - SKShapeNode で線を引く
SKShapeNode を使用して単純に線を描画したい。SpriteKit と Swift を使用しています。
これまでの私のコードは次のとおりです。
それを実行して線を描画しようとすると、アプリがエラーでクラッシュします: 理由: 'すでに親を持つ SKNode を追加しようとしました: SKShapeNode 名:'(null)' AccumulatedFrame:{{0, 0}, {0 , 0}}'
なぜこうなった?
ios - iOS の SpriteKit の座標、フレーム、および子ノードについて混乱していますか?
私はまだ iOS で SpriteKit の学習に取り組んでおり、多くの読書と実験を行っています。座標、フレーム、および子ノードに関して見つけた*他の何かに混乱しています。
次のコード スニペットを考えてみましょう。このコードでは、デバッグ目的で宇宙船のスプライトの周りに緑色のボックスを描画しようとしています。
上記の「VERSION 1」とマークされた行で宇宙船スプライトのセットを追加すると、次のようになります。
これは明らかに間違っています。しかし、上記の「VERSION 1」とマークされた行をコメントアウトし、代わりに「VERSION 2」とマークされた行を使用すると、必要なものが得られます。
バージョン 1 とバージョン 2 とマークされた行の実際のコードは同じであることに注意してください: spaceship.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
では、宇宙船のスプライトの位置を設定することが重要なのはなぜでしょうか?
私の考えでは、宇宙船スプライトの位置は、debugFrame の配置とは無関係です。なぜなら、debugFrame は宇宙船スプライトの子であり、その座標は宇宙船スプライトのフレームに対して相対的でなければならないからです。
ありがとうWM
※昨日の質問と少し関係があります。
iOS の SpriteKit で、テクスチャ付きのスプライトをスケーリングすると、正しくないフレームが生成されますか?
しかし、a) 私は今それを理解しています.b) これは十分に異なっているので、独自の質問に値します.
アップデート:
うーん - 以下のアイデアに感謝しますが、私はまだそれを理解していません.これが役立つかもしれません.
関連する位置とフレームを出力するようにコードを変更しました。
次に、両方の方法で実行すると、これらの結果が得られました。バージョン 2 は理解できたので、そこから始めましょう。
「VERSION 2 (RIGHT)」コードで実行すると、次のようになりました。
デフォルトでは、宇宙船ノードは画面の左下 (Spaceship0) の位置から開始します。そのフレームは、画面の左下に設定されているアンカー ポイント (中心) によっても表現されるため、フレーム四角形の原点には負の数が使用されます。
次に、デバッグ フレームが作成され、その位置はデフォルトで 0 に設定され、そのフレームは宇宙船と同じに設定されます。
コード (Spaceship2) は、宇宙船ノードをビューの座標 (384.0,512.0) 内の位置に移動し、そのフレームの原点は、古い原点に新しい位置を追加することによって移動されます (つまり、384 + -159 = 225)。
すべては順調です。
残念ながら、私はまだバージョン 1 を取得していません。
「VERSION 1 (WRONG)」コードで実行すると、
上記のように、宇宙船ノードはデフォルトで、画面の左下 (Spaceship0) の位置で開始します。そのフレームは、画面の左下に設定されているアンカー ポイント (中心) によっても表現されるため、フレーム四角形の原点には負の数が使用されます。
次に、コード (Spaceship1) は宇宙船ノードをビューの座標 (384.0,512.0) 内の位置に移動し、そのフレームの原点は古い原点に新しい位置を追加することによって移動されます (つまり、384 + -159 = 225)。
次に、デフォルトで位置が 0、0 に設定されたデバッグ フレームが作成され、そのフレームは奇妙な幅 (543.5) と奇妙な高さ (812.5) に設定されます。私は spaceship.frame で debugFrame.frame を初期化しているので (デフォルトのイニシャライザがそうしていると思います)、新しい debugFrame.frame は宇宙船のフレームと同じであると期待しますが、そうではありません! デバッグ フレームの幅と高さの値は、実際の幅と高さを宇宙船ノード フレームの原点 (543.5 = 225 + 318.5) に加算したものと思われます。しかし、そうであれば、なぜ t のフレーム rect の原点はまだ 0, 0 であり、同じ追加 (225.0 + 0 = 225.0) ではないのですか???
理解できません。
ios - 必要以上のノード
SKShapeNode を 1 つ追加するたびに、シミュレーターに表示されるノードの総数が 2 ずつ増えます。これは正常な動作ですか、余分なノードを削除する必要がありますか? 私はxcode 6.1とiOS 8.1を使用しています
ありがとう、
ios - ノードの半径サイズの取得と変更 - Sprite-Kit
私は Swift と SpriteKit を使用しており、このような新しい円を (ノードとして) 作成します
そして、後で円の半径にアクセスして、その値を取得したり、変更したりしたいと思います (たとえば、1 ずつ増やします) - どうすればこれを達成できますか?