Unity记录3.1-地图-TileMap简单使用、鼠标拖动放置Tile
汇总:Unity 记录
上章的课程接下来是巡逻的敌人,不过我地图还没创建好,教程的 AI 估计不适合,所以先停一下,搞地图,这部分估计比较久咯。
Tilemap 创建-2023/02/22
- 手册写的好繁琐。
- 创建个 Tilemap,然后把贴图弄进去变成 tile,再调整 tile size,或者对应调整贴图的 Pixels Per Unit,让一个贴图占满一个 tile。
- 这个我弄的倒是很简单,Pixels Per Unit 用的是默认 100,然后把 tile size 调成 0.5 就刚刚好。
- 我的每个贴图是 25x25 的。
- 然后给 tilemap 加一个 tile collider 2d,即可添加碰撞。
Unity 2D-Extras-2023/2/23
- 看 Tilemap 教程的时候发现官方有额外的 2D 插件,考虑到我目前还没见过和我想象中一样的 2D 世界,所以先把这个 2D 插件翻翻。
- Unity 2D-Extras
- 理论上是把所有功能都了解一下,看看能不能拓展一下思路。
- 笔刷
- Random:随机 Tile。
- Prefab:放预制件。
- Group:同组。
- Tiles
- Animated:序列播放贴图
- Pipeline:根据周围四格 Tile 改变自身材质,应该就是 1x1 和 1x2 的图像不一样的那种。
- Terrain:Pipeline 的升级版,八格。
- 挺好,当时我看有人实现了东西,用的双重循环,我还想着卷积可以改进,官方有提供自然更好了。
- 或者叫滤波器,一个 3x3 滤波器,刚好 GPU 可以加速。
- 惊了,怎么看一会就没了。
- 我还想着看个几天,期待会有地图生成的工具呢,可恶。
- 简单看了一下 Terrain 的源码,似乎是朴素的实现方式,不知道是不是有其它加速。
基于神经网络的 AI-2023/02/24
- 刷视频刷到一个用神经网络实现的 AI,心痒痒,但是想想如果拿去训小怪的话应该会很麻烦,如果只训练一个的话感觉有点可行性,以后再说。
Terrain tiles 规则-2023/02/25
- 按 GitHub 上讲的安装了,我还以为没装成功,没找到 tile 在哪,原来得在资产里创建。
- Terrain tiles 的规则如下图,标号表示 Tile 从上到下的顺序。
- 这玩意这么重要怎么没人画图,可恶,本来就感觉好些重复没必要画但是还是 CV 了,结果真不要画。
- 我觉得这三张图重要到可以单独开一篇了,见:Unity记录3.2-地图-Tilemap中Terrain的连接规则
鼠标事件-2023/02/26
- 参考:unity 2d 四大坐标系问题 鼠标点击位置问题 详细入门解析
- 实现了一下按下鼠标获得世界位置,进而获得在 Tilemap 的位置。
- 最近看到了这个视频:Unity语句解释 脚本放到物体上什么都不用设置就能被用户控制移动(野路子我个人通用角色移动代码)
- 这位 UP 主上月球去写甲骨文真的很有开源精神,给大家推荐一下,会讲单个 Unity 语句的使用方式。
- 我也有考虑过发视频,虽然宿舍大部分时间都只有我一个人,不过还是等以后再说。
- 提到这个视频是因为它给了我一个想法,做一个通用(至少大部分通用)的操纵方式,灵魂岂是如此不便之物。
- 这种通用操纵和我脑海的背景挺符合的,而且感觉有实现可行性。
鼠标按下生成 Tile-2023/02/26
- Tilemap 里瓦块的动态添加与删除
- 按着鼠标左键,鼠标位置会生成 Tile。
- 关键代码如下:
void Update(){
if (input_base.isKeydown("Fire1")){
Vector3Int pos_tilemap = tilemap_modify.WorldToCell(input_base.get_mouse_pos(1));
place_tile(tilemap_modify, pos_tilemap, tile_place);
}
}
void place_tile(Tilemap tilemap, Vector3Int pos, TileBase tile){
tilemap.SetTile(pos, tile);
}
共有 0 条评论