Corona使用Tiled图层中的对象属性。

我是 Lua 脚本和游戏开发的新手,请见谅。

我在网上搜寻解决问题的方案,但没有运气。

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

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

我想要创建透明的可点击对象,与我的游戏地图上的国家边界匹配,且所有参数和值都存储在对象中(我已经在 Tiled 中添加了)。因此,当玩家单击国家时,透明对象(在地图上方)是被单击的对象,事件监听器对单击作出响应。

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

我打算使用 Tiled 地图及其对象的方式是为每个国家创建一个折线轮廓跟踪(创建一个每个国家的对象)。然后将每个“国家跟踪对象”放置在 world.png 图片上方,同时将对象命名为该国家的名称,例如“object.name = TileBritannia”,以及其他在游戏中使用的属性。

我的问题在于如何获得对象信息(例如 object.name),以及事件监听器对对象点击作出响应。

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

  2. 创建国界对象的最佳方式是在一个图层中还是所有国家均作为 Tiled 中的单个对象图层?

  3. 我能否创建一个图层,其中包含子对象,但仍能在我的代码中访问它们?

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

当我尝试使用(local britannia = tiledMap:load(“ britannia.json”))时,“load” 没有起作用,结果为 nil 值。

我正在寻找一种从 json/tmx 文件中提取/获取/读取 object.name,如“objBritannia”或“TileBritannia”的代码。

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

请提供链接或代码示例。

我已经编辑了问题。

谢谢!

点赞
用户869951
用户869951

对于问题1和问题2:我没有使用过Tiled,但是根据Corona Tiled的说明,你的策略是正确的。这个页面让我觉得你可以使用tap事件监听器来检测tap。如果你在这个网页的示例中遇到问题,请更新你的问题以描述得更具体。如果tap事件处理不起作用(可能你正在谈论一个不同的Tiled lib),那么请看 Polygon fill and 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-27 19:59:29