問題タブ [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.
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「未定義」を出力
どうしてこれなの?
ありがとう!
javascript - CSS の配置の問題
melonJSを使ってゲームを作っています。NPC の上にダイアログ ボックスを動的に配置したいと考えています。
全画面表示で、綺麗です。

ビューポートを縮小すると、位置が絶対的なままになり、見栄えが悪くなります。しかし、絶対的に配置しないと、NPC の座標に対して相対的に配置することができなくなります。
$("#dialogBox").css({top: game.data.currentNPC_y+50, left: game.data.currentNPC_x-50, position:'absolute'});

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

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

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 列を作成しcurrNPC、currTaskNPC ごとにすべてのタスクを格納する連想配列をループしますか? ただし、完了した NPC ごとに 1 つの列と、NPC ごとの完了したタスクが必要になります。おい、頭がぐるぐるしてる。
現在の DB スキーマ:

javascript - プログラムで melonJS にエンティティを挿入する
アプリケーションのことを頭の片隅に置きながら、melonJS チュートリアルを進めてきました。
各レベルに読み込まれる .tmx ファイルでエンティティを指定するのではなく、プログラムでエンティティを追加できるようにしたいと考えています。これは melonJS で可能ですか、それともタイル エディターを使用してエンティティを指定する必要がありますか? これはかなり制限的なようです。
それとも、melonJS はそのようなタスクには不適切なフレームワークなのでしょうか? もしそうなら、キャンバスに描画するよりもうまく機能する可能性のある別のフレームワークはありますか?
javascript - キャラクターの動きMelonJSを一時的に無効にする方法は?
私は Melon.Js を使用してゲームを開発しています。Melon.Js が読み込まれるキャンバスの下に、チャット ウィンドウを作成します。問題は、 を入力して AWDS キーを押すと、文字が移動することです。(チャットウィンドウがフォーカスされている限り)キャラクターの動きを一時的に無効にする方法を知っている人はいますか?
「ゲーム.html」
「プレイヤー.js」
入力で「フォーカス」を使用しようとしましたが、MelonJS キャンバスの動きを無効にできません
javascript - 六角形グリッドに基づく html5/canvas ゲームのフレームワーク
六角形のグリッドに基づいて html5 ゲームを開発しています。
いくつかの調査の後、私は使用しました:
MelonJS + Tiled +このトリッキーなこと。この組み合わせではすべてがうまくいくように見えますが、六角形を動的に表示することを考え始めるまでは、私のプレーヤーが移動できるようになりました。頭に浮かぶいくつかのアイデアがあります。
melonjs をスキップして座標を計算し、キャンバスに描画しますが、アーキテクチャの観点からは悪い考えです。
六角形テクスチャ オブジェクトごとにカスタム プロパティを追加しますが、手作業が多すぎます。
それを操作するために melonjs のファサードを追加するか、それともすでに完了していますか?
だから私の質問は:
これらのテクノロジの範囲内でこの問題を解決する最善の方法は何ですか? または別のツールを使用する必要がありますか?
javascript - TypeError: game.HexRenderer は Linux Mint のコンストラクターではありません
私は持っている:
HexRenderer.js:
Play.js:
index.html:
コードは melonjs のチュートリアルに基づいています。
起動すると、次のように表示されます。
TypeError: game.HexRenderer はコンストラクターではありません
問題は、Windows ではすべてが正常に機能することですが、Linux Mint では機能しません(最後の chrome および firefox バージョンで試しました)。
それは何かのトリックですか?違いは何ですか、それはOSにどのように関連していますか?
melonjs - MelonJS デバッグモード
HTML5 ゲームの開発に melonJS ( v3.x ) を使用しています。
デバッグ モード ( http://something:8000/#debug ) ではすべて正常に動作していますが、デバッグ パネル ( http://something:8000/ ) なしでテストすると、シーンが読み込まれてレンダリングされますが、イベントはありません。動作します (keyBind、pointerBind など)。
どこから問題が発生するかわかりません。ログにも、firebug にもエラーはありません。繰り返しますが、すべてがデバッグ モードでうまく機能しています。
編集
私のイベントも正常に動作し、呼び出されたときに発生します。問題は、更新されていないシーンから来ているようです...
melonjs - MelonJS トリガー イベントを手動で
melonjsでHTML5ゲームを作っています。私のエンティティの 1 つ (ET1 と呼ばれる) は、pointerup と pointerdown の 2 つのイベントをリッスンする必要があります。次のように、私のイベントは私のgame.jsファイルに登録されています。
私の ET1 エンティティでは、両方のイベントをリッスンしています:
pointerdown イベントがトリガーされると、ローカル プロパティを更新しています。このプロパティが特定の値に達した場合は、update メソッドから手動で pointerup イベントをトリガーしたいと思います。
registerPointerEvent コールバックを使用して event.publish を使用できるようになりましたが、entitie update メソッドからこれを行う方法がわかりません。何か案が ?