0

我是 Lua 脚本和游戏开发的新手。所以请我只是Lua的菜鸟。

我已经在网上搜索了我的问题的解决方案,但没有任何运气。

我在 windows7 上使用 Photoshop、Corona、Dusk、json 和 Tiled。

我正在创建一个类似“棋盘”的游戏,即 Setlers。我正在使用世界地图作为背景。游戏区域的背景图片是一张世界地图(world.png 文件)。我这里没有问题。

我想在我的游戏地图上创建与国家边界相匹配的透明可点击对象,其中存储在对象中的所有参数和值(我已在 Tiled 中添加)。因此,当玩家点击国家时,透明对象(在地图顶部)是被点击的对象,并且事件监听器会在点击时起作用。

在 Tiled 中,我可以创建我需要的所有对象,命名它们+分配参数和其他值。如果我在 Tiled 中添加 object.alpha 值,则 alpha 值将传递给 corona 并在那里工作。如何从 Corona 的 json/tmx 文件中读取这些数据并将它们添加到 lua 表中?

我想使用平铺地图及其对象的方式是为每个国家的边界​​创建一条折线轨迹(每个国家创建一个对象)。然后将每个“国家追踪对象”放置在 world.png 地图的顶部,同时使用国家名称命名对象,例如“object.name = TileBritannia”以及游戏中使用的其他属性。

我的问题是获取对象信息,例如 object.name,以及对对象单击做出反应的事件侦听器。

  1. 当我使用 png 文件作为背景图像时,折线是在地图上创建可点击区域的正确方法吗?

  2. 在一个图层中或将所有国家作为 Tiled 中的单个对象图层创建国家边界对象的最佳方法是什么?

  3. 我可以创建一个包含子对象的层并仍然在我的代码中访问它们吗?

  4. 如何获取在 Tiled 中设置的对象名称和其他属性。

当我尝试使用 (local britannia = tiledMap:load("britannia.json")) 时,“load”不起作用,得到一个 nil 值。

我正在寻找可以提取/获取/读取 object.name 的代码,即“objBritannia”或“TileBritannia”。来自 json/tmx 文件。

当我尝试从 json 文件中读取不同的参数时,我没有得到我期望的结果。我得到结果 = function: 046A73B0,希望有某种对象名称。

请提供链接或代码示例。

我已经编辑了这个问题。谢谢

4

1 回答 1

0

对于问题 1 和 2:我没有使用 Tiled,但基于Corona Tiled,您的策略是正确的。该页面让我认为您可以只使用点击事件侦听器来检测点击。如果您对该网页上的示例有疑问,请更新您的问题以更具体。如果点击事件处理不起作用(也许您正在谈论不同的 Tiled 库),请查看Polygon fill 和 Point in Polygon detection,因为这基本上是您需要做的。从那里尝试一些东西。如果它仍然对您不起作用,请使用具体信息更新您的问题,否则它可能会被关闭(它有点过于宽泛)。

对于#3,Lua 是一种动态语言,支持在一行中向对象添加属性。因此,在 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 回答