問題タブ [side-scroller]

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.

0 投票する
1 に答える
703 参照

libgdx - 横スクロール ボックス 2D ゲーム

Box2D 横スクロール ゲームを作成する場合、次のコード スナップのように、すべてのオブジェクトをスクロールして (x 軸などで) 移動すると、パフォーマンスが向上しますか?

また、レンダリングについても疑問に思っていました。すべてのボディのすべてのテクスチャをレンダリングすると、レベル全体を一度にレンダリングすることになり、貴重な FPS に多くのコストがかかることになります。

0 投票する
1 に答える
323 参照

android - パスの描画とスクロールのパフォーマンスの問題

こんにちは、地形が無限のトンネルのように見えるエンドレス横スクロール ゲームをやっています。このコードを使用して、トンネルをランダムに生成することができました。

次を使用してスクロールします。

問題は、パスが長いほど、ゲームがより「不安定」になることです。しばらくしてパスに描画されているポイントを減らす必要があると思いますが、正直なところ、それを行う方法がわかりません。それでも地形をスクロールして生成させます。助けていただければ幸いです。ありがとう。

0 投票する
2 に答える
2929 参照

python - Pythonでのゲームのコイン収集関数

私は現在、pyhton 3.2.3 と pygame でメイン キャラクターがコインを収集できるようにするサイド スクローラー ゲームの関数の作成に取り組んでいます。私がやろうとしているのは、キャラクターの位置がお金の位置と同じになると、お金が消えるということです。これが私のコードです:

レベルの画像を再ブリットしてお金を消そうとしていますが、何らかの理由でこれは起こりません。理由はわかりませんが、何らかの理由で機能していません。すべてが正しいように見えますが、guyPos が moneyPos と決して等しくないと仮定しています。どんな助けでも大歓迎です。

0 投票する
1 に答える
768 参照

javafx-2 - JavaFXを使用してゲーム内でキャラクターを移動するベストプラクティスは?

私は JavaFX で単純な横スクロール ゲームを作成しており、少し調査を行っています。ただし、実際に始める前に、従来のゲーム作成方法を使用していることを確認したかったのです。私は次の考えを持っていました:

プレイヤー キャラクター/敵は StackPane を拡張します
。プレイヤー、背景、敵が存在するレベル自体は Scene を拡張します。
キーの押下はレベル シーン自体で処理され、プレイヤー キャラクター クラスに存在する移動コマンドが呼び出されます。
プレイヤー キャラクターはカスタム gif 画像を使用し、キーが押されたときに移動するアニメーションには TranslateTransition を使用します。

このアプローチには明らかな欠陥がありますか? 一つは、私は CSS を使用せず、練習のためにゲームをそのままコーディングすることです。

0 投票する
1 に答える
168 参照

java - 配列リストとロジック (Java) に問題がある、垂直方向のサイド スクローラーの作成

私はプログラミングの 2 年目で、Java しか知りません。ただし、私のクラスでは、垂直方向のサイド スクローラーを作成する必要があります。私の設定では、敵船用の ArrayList と、プレイヤーのロケット用の ArrayList があります。render(Graphics2D g) メソッドでプレイヤー船の正確な場所に 2 つのロケットを描画し、同じメソッドで敵船を描画します。ロケットの ArrayList は、

ここで、r と r2 はパラメーター (x、y、w、h) を持つロケットであり、arsenal はロケットの配列リストです。宇宙船のさまざまな端にある、非常に特定の場所にそれらを描画するように設定しました。update() メソッドには、次のメソッドがあります。

これは、arraylist が空になったときにロケットが再追加され、宇宙船の端に対応する座標に再描画されるようにするためです。ロケットが消える唯一の方法は、画面外に出るか、敵と衝突するときです。私はそれをチェックするためにこのコードを入れました:

このメソッド全体が敵船の配列リスト「army」を調べて、(1) 敵船が設定された高さを超えたかどうか、(2) プレイヤー船が敵船と衝突したかどうか、(3) ロケットがアーセナル アレイリストで敵艦と衝突しました。すべての衝突は長方形を使用して行われます。p.changeH(10); コマンドはプレイヤーの体力を 10 下げることで、スコアは +=20 です。スコアを上げることです。これらすべてのチェックで、敵艦が配列リストから削除されて描画されなくなることを確認します。次に、ロケットが画面外に出たり衝突した場合、それらも配列リストから削除され、仮想的に描画が取り消されます。言及は、敵艦のarralustが以下によって居住されるようになることです:

パラメータ (x,y,w,h,Image) を受け取り、横スクロールのように見せるために最初にオフスクリーンで描画されます。x 変数はランダムであるため、すべての船が同じ場所に表示されるわけではありません。frameCount は更新ごとに 1 ずつ増加し、update() メソッドは 1 秒間に 60 回呼び出されます。

私のプロジェクトへのこの大規模な紹介の後、私の問題は、ゲームを実行するたびに、ゲームが数秒後に停止し、Eclipse がコードでエラーを表示することです。

問題がわかりません。どんな助けでも大歓迎です。さらにゲーム コードが必要な場合は、お知らせください。ありがとう!

編集:

次の行に移動します。

これはループの一部です:

コンストラクターでは、コマンドを配置する場所です

これにより、それらが arraylist に追加されます。render(Graphics2D g) メソッドでは、次を使用して描画します。

ロケット コンストラクターでは、p.currentX() はプレーヤーの現在の x 座標であり、p.getHalfY() と p.getHalfX() は一目瞭然です。それらは、ロケット r が片側に表示され、ロケット r2 が反対側に表示されるようにコード化されています。rMove と r2move という 2 つのブール変数も作成しました。これらはロケットのスムーズな動きを助け、いつ動くかを伝えます:

setP(x,y) は、ロケットの位置を元の場所に設定します。私はこれについて先生に話しました.彼は私が配列リストと別々のオブジェクトの両方を使用していると言いましたが、私は問題を理解していません. さらに関連するコードが必要な場合は、お知らせください。このコード行は、いつ移動するかをロケットに伝えます。それは、スペース ボタンが発射されたときです。

0 投票する
2 に答える
575 参照

java - update() メソッド内の boolean 値と int 値のリセットに関する問題

私のゲームでは、と呼ばれるブール変数を使用しています

ゲームが開始されるたびに true に設定されます。と呼ばれるint変数もあります

ゲーム開始時に180に設定されています。これらは、設定された時間、画面に「Wave X の準備」というテキストを表示するために使用されます。onScreenTime が 180 で、fps が 60 であるため、テキストは 2 秒間しか表示されません。2 秒が経過すると、onScreen が false に設定され、ゲームが続行されます。コード:

onScreen = true の場合にのみ、画面にテキストを描画します。次のコードは update() メソッド内にあり、これまでに説明した 2 つの変数を操作します。

基本的に、onScreenTime は update() が呼び出されるたびに 1 ずつ減少し (1 秒間に 60 回)、0 の場合は onScreen = false になります。次に、同じ update() メソッドに、2 つの if ステートメントがありますが、これは一目瞭然です。

そして最後に、同じ update() メソッドで、

currentLevel は、敵、描画される画像、一度に画面に描画される数、出現する頻度を決定します。wave() は各レベルのウェーブを作成するメソッドです。それは次のように表されます。

i はイメージ、enemyH とenemyW = 30、10 はライフです。それは後で変更されます。私の問題は、「ウェーブの準備: 2」というテキストが表示されると消えないことです。最初の「ウェーブの準備: 1」は機能して消えますが、2 つ目は機能しないため、敵はスポーンしません。

編集: コメントで指摘されているように、私は 2 秒を書きましたが、それは 3 秒である必要があります。 編集: 以前の方法を次のように変更しました:

また、以前の方法を次のように変更しました。

ヒットごとにスコアが 20 ずつ上がります。問題は、== 500 ではなく if(score > 500) に設定したことだと思います。

0 投票する
1 に答える
28 参照

java - 同じオブジェクトに対して異なるイメージが描画される

ゲーム内の画像に問題があります。先生が作成した ImageLoader クラスを使用しています。次のように 2 つの Image 変数を作成します。

ヘルス パワーアップを作成するには、arraylist を使用し、次のコードを使用して入力します。

energyWH は、幅と高さの両方に使用される 1 つの変数です。これは 35 に等しいです。このコードを使用して、敵のロケット配列リストを作成します。

20 と 20 は幅と高さ、x と y は敵がその正確な位置と時間にいる場所、environmentRocket は画像変数、5 は ySpeed (敵が画面を下に移動する速さ)、d はプレイヤーシップに与えるダメージ。私の問題は、ゲームがランダムに進行するにつれて、敵がすべてロケットを発射してから約 1 秒後に、ロケットに関連付けられている画像変数が突然ヘルス パワーアップの画像に切り替わるため、ヘルス パワーアップが近づいているように見えることです。 、しかし、それは本当に敵のロケットです。写真はロケットからヘルスパワーアップに切り替え中

0 投票する
1 に答える
59 参照

cocos2d-iphone - cocos2d 宇宙船は敵をターゲットにしてから順番に撃ちます

Xcodeでcocos2dバージョン3を使用しています。

タッチされた順序で、スプライトをいくつかのタッチ位置に移動したいと考えています。毎回違う番号になります。

TouchBegan では、タッチ位置にターゲットのように見えるスプライトを追加し、それらをオブジェクトとして配列に保存しました。アレイを初期化しましたが、正常に動作しています。

スプライトを最初のオブジェクトの場所に移動し、次に 2 番目、3 番目などに移動する必要があります。ほぼそこにいますが、配列を「循環」して場所を取得する方法が見つかりません。CCNode を objectAtIndex:0 として設定し、nodePosition を使用することによってのみ、最初の位置を取得できます。

これは多くのことを尋ねていますが、何日もグーグルで検索しましたが、何も見つかりません! 何日もこれを続けています!

0 投票する
0 に答える
181 参照

java - ゲームで終わりのない背景のスクロールが期待どおりに機能しない

私は最初の横スクロール ゲームに取り組んでおり、終わりのない背景効果を実現しようとしています。ほぼ期待どおりに動作していますが、不具合はほとんどありません。

背景の 2 つのインスタンスがあり (それぞれが画面の幅を埋めます)、1 つは画面の左下隅に配置され、もう 1 つは画面の右隅に配置されます。次に、カメラを各フレームを右に移動し、最初のバックグラウンド インスタンスが完全に左にオフスクリーンになったら、X をカメラの右にリセットして、(カメラに対して) 画面の右から外れるようにします。 . これは多くの場合機能していますが、x 位置をリセットするメソッドが数フレーム遅れて呼び出され、背景にギャップが生じることが時々あるようです。

メインゲームで使用している更新コードは -

BgFill クラスの update メソッド -

まず、これは連続スクロールの背景を行うための通常の方法 (またはそれに近い方法) ですか?

もしそうなら、私は何を間違っていますか?