問題タブ [melonjs]

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 投票する
2 に答える
53 参照

javascript - 予期せず undefined を返すクロージャー

melonJS ゲームを作成しています。

私のプレーヤー エンティティ -game.PlayerEntity = me.ObjectEntity.extend({では、その更新関数が衝突をチェックします。

次に、NPC エンティティ オブジェクトで、上記の PlayerEntitygame.NPCEntity = me.ObjectEntity.extend ({に戻りたいと思います。settings.nameこれを行うために、クロージャーを作成しましたreturnSettings()

1)console.log(settings.name)期待どおり「Lee」を出力します

2) return settings.name「未定義」を出力

どうしてこれなの?

ありがとう!

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

javascript - CSS の配置の問題

melonJSを使ってゲームを作っています。NPC の上にダイアログ ボックスを動的に配置したいと考えています。

全画面表示で、綺麗です。

ここに画像の説明を入力

ビューポートを縮小すると、位置が絶対的なままになり、見栄えが悪くなります。しかし、絶対的に配置しないと、NPC の座標に対して相対的に配置することができなくなります。

$("#dialogBox").css({top: game.data.currentNPC_y+50, left: game.data.currentNPC_x-50, position:'absolute'});

ここに画像の説明を入力

これを回避する方法はありますか?


編集:

以下を使用すると、コードは上記のようにスケーリングされませんが、少なくとも NPC の近くとキャンバス上にはまだあります。

ここに画像の説明を入力

あなたが提案したコードを使用すると、キャンバスの外に表示されます。

ここに画像の説明を入力

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

javascript - RPG - やや複雑なツリー構造のプレイヤー データの保存

melon JS と PHP で SQL DB を使用して、js で Web RPG を作成しています。この質問は、ノンプレイヤー キャラクター (NPC) ごとに完了済みおよび現在のタスクを保存する方法に関するものです。

NPC ダイアログとタスク データ:すべてのダイアログは、次の構造の js オブジェクトに格納されます。

ファイルが雑然としてしまうため、すべてのマップ ダイアログを同じファイルに保存するわけではありません。代わりに、マップが変更されたときに、新しいダイアログ セットを含む新しいファイルjs_requireをロードします。js

ここに画像の説明を入力

タスク番号:新しい NPC が作成されると (クラスgame.NPCEntity)、NPC のインスタンスごとtaskNumに 0 に設定されたローカル変数を作成します。彼らがタスクを完了すると、その NPC のタスク番号にアクセスしてインクリメントするだけです。

この RPG では、次のことを達成したいと考えています。

  • GTA スタイルの無料ワールド クエスト キュー:レベルの進行、クエストの進行、NPC ごとのタスクの進行は直線的 (レベル 1 を完了するとレベル 2 に進むなど) ですが、クエストごとに一連の NPC が生成されます... (それらはサブクエストと考えることができます)、それぞれに 1 から n のタスクが含まれます。プレーヤーが任意の順序で生成された NPC と会話できるようにするクエスト キューの柔軟性を組み込みたいと考えています...そしてタスクを線形の順序で完了することができます (タスク 1、2、3...)。ゲーム全体が直線的な進行に従うため、これは GTA スタイルに似ていますが、世界中のランダムな人々と話すことで、必要なクエストを柔軟に開始できます。

  • ゲーム データ:ゲームは、現在および完了したレベル、レベルごとのクエスト名、クエストごとの npc 名、および各ログイン プレイヤー ID の npc 名ごとのタスクを保存する必要があります。次のツリーをロードする必要があります (赤 = 完全)。

ここに画像の説明を入力

私の質問

  • ゲームが読み込まれると、上記のツリーで述べたことが記憶されているはずです。レベルとクエスト情報をロードするように DB をセットアップしました (DB から現在のレベルとクエスト番号を返すだけで、ループが現在のレベルとクエストに到達するまで、配列にNPC dialog値を格納する上記の構造をループします。 num from DB)...プレイヤーの座標と経験値も...currentAndCompleteLevelscurrentAndCompleteQuests

ただし、プレーヤーがいつでも NPC タスク リストを開始、一時停止、再開できるようにしているため、データベースにnpc completed numand列を実際に追加することはできません。tasks completed numこれは、NPC クエストを完了する順序が線形ではないNPC dialogため、構造をループして情報をロードするのと同じ方法でlevelループできないためです。どういうわけか、NPC ごとに完了したタスク数を追跡する必要があります。これどうやってするの?quest

NPCDataゲーム内のすべての NPC を格納する新しいテーブルを作成し、current task numその NPC を格納することを考えていましたが、ゲームにログインした新しいプレイヤーのために新しいエントリを作成する必要があります。

または、 userstatsテーブルに2 つの DB 列を作成しcurrNPCcurrTaskNPC ごとにすべてのタスクを格納する連想配列をループしますか? ただし、完了した NPC ごとに 1 つの列と、NPC ごとの完了したタスクが必要になります。おい、頭がぐるぐるしてる。

現在の DB スキーマ:

ここに画像の説明を入力

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

javascript - プログラムで melonJS にエンティティを挿入する

アプリケーションのことを頭の片隅に置きながら、melonJS チュートリアルを進めてきました。

各レベルに読み込まれる .tmx ファイルでエンティティを指定するのではなく、プログラムでエンティティを追加できるようにしたいと考えています。これは melonJS で可能ですか、それともタイル エディターを使用してエンティティを指定する必要がありますか? これはかなり制限的なようです。

それとも、melonJS はそのようなタスクには不適切なフレームワークなのでしょうか? もしそうなら、キャンバスに描画するよりもうまく機能する可能性のある別のフレームワークはありますか?

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

javascript - キャラクターの動きMelonJSを一時的に無効にする方法は?

私は Melon.Js を使用してゲームを開発しています。Melon.Js が読み込まれるキャンバスの下に、チャット ウィンドウを作成します。問題は、 を入力して AWDS キーを押すと、文字が移動することです。(チャットウィンドウがフォーカスされている限り)キャラクターの動きを一時的に無効にする方法を知っている人はいますか?

「ゲーム.html」

「プレイヤー.js」

入力で「フォーカス」を使用しようとしましたが、MelonJS キャンバスの動きを無効にできません

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

javascript - 六角形グリッドに基づく html5/canvas ゲームのフレームワーク

六角形のグリッドに基づいて html5 ゲームを開発しています。

いくつかの調査の後、私は使用しました:

MelonJS + Tiled +このトリッキーなこと。この組み合わせではすべてがうまくいくように見えますが、六角形を動的に表示することを考え始めるまでは、私のプレーヤーが移動できるようになりました。頭に浮かぶいくつかのアイデアがあります。

  • melonjs をスキップして座標を計算し、キャンバスに描画しますが、アーキテクチャの観点からは悪い考えです。

  • 六角形テクスチャ オブジェクトごとにカスタム プロパティを追加しますが、手作業が多すぎます。

  • それを操作するために melonjs のファサードを追加するか、それともすでに完了していますか?

だから私の質問は:

これらのテクノロジの範囲内でこの問題を解決する最善の方法は何ですか? または別のツールを使用する必要がありますか?

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

javascript - TypeError: game.HexRenderer は Linux Mint のコンストラクターではありません

私は持っている:

HexRenderer.js:

Play.js:

index.html:

コードは melonjs のチュートリアルに基づいています。

起動すると、次のように表示されます。

TypeError: game.HexRenderer はコンストラクターではありません

問題は、Windows ではすべてが正常に機能することですが、Linux Mint では機能しません(最後の chrome および firefox バージョンで試しました)。

それは何かのトリックですか?違いは何ですか、それはOSにどのように関連していますか?

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

melonjs - MelonJS デバッグモード

HTML5 ゲームの開発に melonJS ( v3.x ) を使用しています。

デバッグ モード ( http://something:8000/#debug ) ではすべて正常に動作していますが、デバッグ パネル ( http://something:8000/ ) なしでテストすると、シーンが読み込まれてレンダリングされますが、イベントはありません。動作します (keyBind、pointerBind など)。

どこから問題が発生するかわかりません。ログにも、firebug にもエラーはありません。繰り返しますが、すべてがデバッグ モードでうまく機能しています。

編集

私のイベントも正常に動作し、呼び出されたときに発生します。問題は、更新されていないシーンから来ているようです...

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

melonjs - MelonJS トリガー イベントを手動で

melonjsでHTML5ゲームを作っています。私のエンティティの 1 つ (ET1 と呼ばれる) は、pointerup と pointerdown の 2 つのイベントをリッスンする必要があります。次のように、私のイベントは私のgame.jsファイルに登録されています。

私の ET1 エンティティでは、両方のイベントをリッスンしています:

pointerdown イベントがトリガーされると、ローカル プロパティを更新しています。このプロパティが特定の値に達した場合は、update メソッドから手動で pointerup イベントをトリガーしたいと思います。

registerPointerEvent コールバックを使用して event.publish を使用できるようになりましたが、entitie update メソッドからこれを行う方法がわかりません。何か案が ?