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

时间:2014-04-26 21:40:52

标签: json object lua corona tiled

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

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

我在Windows7上使用Photoshop,Corona,Dusk,json和Tiled。

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

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

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

我想使用Tiled地图及其对象的方法是创建每个国家边界的一条折线轨迹(每个国家创建一个对象)。然后将每个“country traced object”放在world.png映射的顶部,同时使用像“object.name = TileBritannia”这样的国家名称命名对象,以及在游戏中使用的其他属性。

我的问题是获取对象信息,如object.name和eventlistener对点击对象的反应。

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

  2. 在Tiled中创建国家/地区边界对象的最佳方法是在一个层中,还是将所有国家/地区作为单个对象层创建。

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

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

  5. 当我尝试使用(本地britannia = tilesMap:load(“britannia.json”))时,“加载”无效,获得零值。

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

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

    请提供链接或代码示例。

    我编辑了这个问题。 感谢

1 个答案:

答案 0 :(得分:0)

对于问题1和问题2:我没有使用Tiled,但基于Corona Tiled,您有正确的策略。那个页面让我觉得你可以使用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")应该做什么,所以我无法发表评论。