tileview选中 ue4_对ue4的tilemap的浅显理解!

最近因为项目太忙,很久没写文章了,感觉都生疏了,稍微得点闲空,研究了一下ue4得tilemap,有些收获,就记录下来了.

首先工程里要有一个papertilemap2d得actor,当然我改造了一下,使用这个基类扩展了一个自己得actor方便做一些属性得查找什么得.

然后我们在这个actor里面可以看到一个设置map得地方

额外说一下,这个convert to instance还蛮好用得,我用它把一个地图产生了两个实例,然后可以分辨关闭其中得一些层,之所以这么做,是因为,ue4的tilemap无法单独设置每个层的高度,只能均等分,像我这种需要三面几个层靠近一点,overlay需要抬高的,又希望可以一起编辑地图的,只能用这种旁门左道了.

就类似这样的效果,开两个actor,引用同一个地图,一个上面关上面一层,一个上面只开最上面一层。然后把其中一个actor拉远,大致就是这样的。

这里面都很好理解,地图的每个cell的宽和高,宽高的总数,separation 这个代表了每个层之间的间隔,中间可以放置你自己的角色的,3d,2d都可以。如果没有特别需求的就把这个数值设置大即可了.

在模式里,根据自己的需求可以设置标准的正交视角,也就是90度正方体,还有90度斜视角,就是创世纪那种(不过我估计很多人都不知道,太老了),另外标准45度斜视角,以及p棋盘格那种蜂巢形状的地图.

tilemap里没什么花头,基本上也就这些设置,碰撞么肯定使用3d physics的。碰撞的设置方法在mapset里面,也就是tile的元素里,不在地图里,这个其实有点问题的,按道理碰撞这块应该地图里可以单独设置属性,这样更直观.

mapset的里的操作我就不具体说了,这主要是美术的事情,只说一个重点,就是碰撞,在mapset里可以定义每一个tile的碰撞,但是不可以定义一块的,也就是你一个屋子6个地块组成,你需要点6个tile一个个设置.这点有点反人类的.就类似这样的。

这里面有个重点,就是在设置碰撞的时候如果我们需要具体的属性怎么办,这个你切到上面那个metadata files可以看到自己定义的数据,如果有定义的就是橘黄色的。

选择了这个标记的块后,我们可以看到右边可以设置属性了,你可以定义多个字段。比如传送啊,是否可以种植啊,踩上去什么sound啊,都可以,可以自由发挥了。

这个属性有比较麻烦的地方,就是获取不容易.我是获取了地块的tilemap再遍历获得 .

输入法出问题,就写到这里吧有空再i继续.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lv_tileview_set_valid_positions函数用于设置有效的位置,即指定哪些位置可以被滚动到。该函数的原型为: ```c void lv_tileview_set_valid_positions(lv_obj_t *tileview, const lv_point_t *valid_pos_array, uint16_t array_len) ``` 其中,`tileview`是要设置的平铺视图对象,`valid_pos_array`是一个包含有效位置的数组,`array_len`是数组的长度。 例如,可以使用以下代码创建一个带有有效位置的平铺视图: ```c lv_obj_t *tileview = lv_tileview_create(parent); lv_point_t valid_pos_array\[\] = { {0, 0}, {0, 1}, {1, 1}, {LV_COORD_MIN, LV_COORD_MIN} }; lv_tileview_set_valid_positions(tileview, valid_pos_array, sizeof(valid_pos_array) / sizeof(valid_pos_array\[0\])); ``` 上述代码中,`valid_pos_array`数组定义了有效位置,其中`{0, 0}`表示左上角的瓦片,`{0, 1}`表示第二行的第一个瓦片,`{1, 1}`表示第二行的第二个瓦片。最后一个元素`{LV_COORD_MIN, LV_COORD_MIN}`表示没有瓦片的位置,用户不能滚动到那里。 通过调用`lv_tileview_set_valid_positions`函数,将有效位置数组传递给平铺视图对象,即可设置有效的位置。 #### 引用[.reference_title] - *1* *2* [嵌入式GUI LVGL『Tile View拼接视图控件』介绍](https://blog.csdn.net/XiaoXiaoPengBo/article/details/114086862)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [平铺视图部件(lv_tileview)](https://blog.csdn.net/weixin_45922499/article/details/129335767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值