如何获取45°tilemap的图块中心坐标



  • 在正常tilemap中,我们可以使用返回编号所在图块中心点,这个表达式来获取图块坐标。但是使用45°tilemap后,就无法获得正确的坐标,求解决办法。



  • 45°tilemap的图像是在【基础格子】上转换后的结果,所以表达式获取的依旧是【基础格子】的坐标、编号等,我验证了一下,【基础格子(图左)】和【实际格子(图右)】的对应关系如下:
    undefined
    所以45°tilemap的表达式获取到的,是上图中左侧所代表的【基础格子】的坐标、编号等。
    根据这个,可以模拟【基础格子】到【实际格子】的转换过程:
    undefined
    核心逻辑如下:
    undefined
    理论上,把这个结果进行逆运算就可以反向拿到45°tilemap【实际格子】的坐标、编号等换算结果。但是我数学计算能力有限,一时也没算出来,这里有个难点就是45°tilemap的格子是菱形的,所以计算当前坐标的格子归属时会变得很麻烦,所以这里我只提供这个基础的方案:
    上面这个逻辑生成的这些【格子区域】让45°tilemap的格子变成了单个块,可以通过这些生成的单个块拿到【实际格子】的坐标、编号等(编号需要【格子区域】实例生成时设置给实例变量来记录)
    而且形状也可以设置成菱形:
    undefined
    如果不想这些生成的它们显示出来,可以把这个对象的不透明度调为0
    这个方案的缺点是会生成太多实例,如果地图太大,可能会有性能问题(所以直接去找官方提这个表达式的优化建议比较好😂
    总之我范例先放这里了,你有兴趣的话可以研究一下怎么逆运算:生成45°tilemap格子区域.evk



  • @欧拉欧拉 难道你不是官方人员,每天都看你在社区里面,解答问题。如果你不是官方人员,技术又这么好,介意加个QQ1502884102,我有问题好讨教下,还望大佬指教了。



  • @猫人队长 如果来论坛的人都只来提问没人来答,你就不会这么想了


登录后回复