godot 随机地图2-tilemap
着色器语言和计算机视觉对地图生成的操作放在tilemap之后。
因为godot语言并不是c++,指针的使用非常麻烦,那就使用传统的一顶帽子全部扣下。
如果只用代码可以更加方便,但是为了阅读直观,我还是在node下面instances需要使用的class。
pre:
对昨天的结构进行修改

对代码进行修改

针对上次需要getdata,但是得到的结果并不是统一的,因为返回的数据是RGBA,这导致125*125 返回的大小大于15,625。为了直接点,现阶段不使用getdata,而是直接get_pixel。

一、生成tile
我大概画了1小时才搞清楚4.0tilemap的操作,虽然这东西人人都可以独立发明一次,在tilemap的func中,并没有什么奇奇怪怪的操作,


最重要的就是set cell,真的艹了他弄成这样。

set_cell(0,vec2i(x,y),0,vec2i(0,0))
第一个0是所在的图层,我命名为01,因为为了方便阅读,弄成00太艹了。
vec2i(x,y),所在的坐标
第二个0,为basetile的 id,因为现在还有一个tileset
vec2i(0,0),为使用的atlas的卓彪,第一个 绿色的 编号为0,在tileset的cord为(0,0)
具体参考这里
https://youtu.be/ztPbGyQnKPo?t=394
二、完整代码

运行效果

noise的texture我还是用sprite显示出来了
下面的黄色,为了调整坐标,简单弄得
绿色的部分就是生成的tile
三、给tile添加碰撞
1、点击tileset

出现新的ui,点击 physics layers


加一个

2、去绘制中画出碰撞体


全碰撞

这样就可以了。
总结:godot的有100中获取tilemap信息的功能,缺只有一种设置tile的功能。这不布局,反正4.0.2的tile操作不是很友好,希望后面更新。但是框架很大哦。还是和期待的。