0

Lua スクリプトとゲーム開発は初めてです。だから私はLuaの初心者です。

問題の解決策をネットで検索しましたが、運がありませんでした。

Windows7 で Photoshop、Corona、Dusk、json、Tiled を使用しています。

ゲームのような「ボード」、つまり Setlers を作成しています。背景として世界地図を使用しています。ゲームエリアの背景画像はワールドマップ(world.pngファイル)です。ここでは問題ありません。

オブジェクトに保存されているすべてのパラメーターと値 (Tiled で追加したもの) を使用して、ゲームマップの国境に一致する透明なクリック可能なオブジェクトを作成したいと考えています。そのため、プレーヤーが国をクリックすると、透明なオブジェクト (マップの上部) がクリックされたオブジェクトになり、イベント リスナーがクリックに対して動作します。

Tiled では、必要なすべてのオブジェクトを作成し、名前を付けて、パラメーターやその他の値を割り当てることができます。Tiled に object.alpha 値を追加すると、アルファ値がコロナに渡され、そこで機能します。これらのデータをコロナの json/tmx ファイルから読み取り、lua テーブルに追加するにはどうすればよいですか?

タイル マップとそのオブジェクトを使用するために私が考えている方法は、各国の国境の 1 つのポリライン トレースを作成することです (国ごとに 1 つのオブジェクトを作成します)。次に、各「国をトレースしたオブジェクト」を world.png マップの上に配置し、「object.name = TileBritannia」のように国の名前をオブジェクトに付け、ゲームで使用するその他のプロパティも指定します。

私の問題は、object.name などのオブジェクト情報と、オブジェクトのクリックに反応するイベントリスナーを取得することです。

  1. 背景画像として png ファイルを使用する場合、ポリラインはマップ上にクリック可能な領域を作成する正しい方法ですか?

  2. 1 つのレイヤーで、またはタイル化された個々のオブジェクト レイヤーとしてすべての国を使用して、国境オブジェクトを作成する最良の方法は何ですか。

  3. サブ オブジェクトを含むレイヤーを 1 つ作成し、コード内でそれらにアクセスすることはできますか?

  4. Tiled で設定されたオブジェクト名とその他のプロパティを取得するにはどうすればよいですか。

(local britannia = tiledMap:load("britannia.json")) を使用しようとすると、「ロード」が機能せず、nil 値が取得されます。

object.name、つまり「objBritannia」または「TileBritannia」を抽出/取得/読み取るコードを探しています。json/tmx ファイルから。

json ファイルからさまざまなパラメーターを読み取ろうとすると、期待した結果が得られません。私は結果 = を取得し、function: 046A73B0何らかのオブジェクト名を望んでいました。

リンクまたはコード例を提供してください。

質問を編集しました。ありがとう

4

1 に答える 1

0

質問 1 と 2 について: 私は Tiled を使用したことはありませんが、 Corona Tiledに基づいて、適切な戦略を念頭に置いています。そのページでは、タップイベントリスナーを使用してタップを検出できると思います。その Web ページの例に問題がある場合は、質問を更新してより具体的にしてください。タップ イベント処理が機能しない場合 (別の Tiled ライブラリについて話している可能性があります)、Polygon fill と Point in Polygon detection を調べてください。そこから色々試してみてください。それでもうまくいかない場合は、質問を具体的に更新してください。

#3 については、Lua は、1 行でオブジェクトにプロパティを追加することをサポートする動的言語です。したがって、Corona Tiled ページの例では、あなたがしなければならないことは、

tiledMap = require("tiled") 
local britannia = tiledMap:load("britannia.json")
britannia.name = "Britannnia"
local Zulu = tiledMap:load("zulu.json")
zulu.name = "zulu"

当然のことながら、おそらくたくさんあるので、各タイルに対して呼び出す関数を作成します。どうすればいいのか不明なmap.layer["objBritannia "].nameIs("TileBritannia")のでコメントできません。

于 2014-04-27T19:59:29.200 に答える