草庐IT

Unity-Tilemap 瓦片地图

莉萝爱萝莉 2023-04-09 原文
1. 平铺调色板
  1. 用来在瓦片地图上进行绘制的调色板,里面装有预制好的瓦片。
  2. 使用吸管框选范围来仿制图章。
2. 瓦片
  1. 由图片精灵或2D纹理构建的瓦片,可以直接将图像拖入进行预制。
  2. 为了保证每个精灵填满瓦片,需要将每单位像素数和单位精灵大小保持一致
  3. 若瓦片碰撞器类型为精灵,那么单位碰撞会与图像边缘严丝合缝,若为网格,碰撞器将为单元格大小,若为无,该单位不会参与碰撞运算
3. 地形绘制
  1. 将在调色板中的瓦片选中,便可直接在场景的地图上绘制。
  2. Grid中单元格重排,以及 Tilemap中的方向 两项,可以决定地形排列是三维空间的哪个平面。默认是xyz和xy平面
  3. 同Grid多个瓦片地图,可以在调色板中直接切换快捷上色
  4. 添加Tilemap Collider 2D;来让地形具有单位碰撞的能力。
    如果勾选了由效果复合使用,碰撞会变成固定大小的一个整体,即便地形被破坏了单位碰撞也不会改变。

扩展:2d-extras

下载链接:https://github.com/Unity-Technologies/2d-extras
直接装入Assets

1. RuleTile

让瓦片以一定的规则进行上色
设置默认瓦片以及瓦片规则:

符号描述
X这个位置没有物体
<- ->这个方向有物体
output选项:
符号描述
单一单一精灵瓦片
动画随机选中一个精灵作为瓦片
动画设置动画瓦片
2. PrefabBrush
  1. 生成一个预制体笔刷,方便地将预制体放入Tilemap
    值得注意的是,预制体并不会真的装入Tilemap。而是作为它的子集
  2. 预制体笔刷的选用在下方调色板下方的笔刷中选择
3. 其他笔刷
笔刷描述特殊
Coordinate Brush可以显示坐标的笔刷-
Line直线笔刷FillGaps: 填充空隙
Tint Bush给2d-extras瓦片上色-
Tint Bush(smooth)给瓦片上一个发光点需要给地形添加 TintedTilemap 材质
4. 相关函数
// 清空全部瓦片
// tm.ClearAllTiles();

// 根据坐标获取瓦片
TileBase tile1 = tm.GetTile(new Vector3Int(-1, -4, 0));

// 根据坐标设置瓦片
// tm.SetTile(new Vector3Int(-1, -3, 0), tile1);

// 根据坐标列表设置瓦片列表
// tm.SetTiles(new Vector3Int []{ new Vector3Int(-1, -3, 0) }, new TileBase []{ tile1 });

// 根据坐标删除瓦片
// tm.SetTile(new Vector3Int(-1, -4, 0), null);

// 将地图内一种瓦片替换成另一种瓦片
// tm.SwapTile(tile1, tb);

// 克隆一块地形到另一个地方
// TileBase[] tileArray = tm.GetTilesBlock(new BoundsInt(new Vector3Int(-1, -4, 0), new Vector3Int(2, 3, 1)));
// tm.SetTilesBlock(new BoundsInt(new Vector3Int(1, 4, 0), new Vector3Int(2, 3, 1)), tileArray);


void Update()
    {
    if (Input.GetMouseButton(0))
    {
        // 转换成游戏内的世界坐标
        Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        // 转换成格子的坐标
        Vector3Int cellPos =  grid.WorldToCell(worldPos);

        // Debug.Log(worldPos);
        // Debug.Log(cellPos);
        ExplosionLogic(cellPos);
    }
}

void ExplosionLogic(Vector3Int cellPos)
{
    tm.SetTile(cellPos, null);
}

有关Unity-Tilemap 瓦片地图的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  4. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  5. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

  6. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  7. 三分钟集成 TapTap 防沉迷 SDK(Unity 版) - 2

    三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应

  8. 【Unity大气散射】GAMES104:3A中如何实现大气散射 - 2

    写在前面前两天学习并整理的大气散射基础知识:【Unity大气渲染】关于单次大气散射的理论知识,收获了很多,但不得不承认的是,这其实已经是最早的、90年代的非常古老的方法了,后来也出现了一些优化性的计算思路和方法。因此,我打算先不急着跟各种教程在Unity中实现大气散射,而是再花时间来看看最近的游戏是如何去实现大气渲染的:06.游戏中地形大气和云的渲染(下)|GAMES104-现代游戏引擎:从入门到实践接下来就跟着GAMES104讲地形大气和云渲染的部分学习并做简单的记录,涉及到之前没提到的Mie散射也只选择直接截图PPT的方式记录啦!毕竟对于做作品来说,之后实现出来才是重要的~当然,May佬的

  9. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  10. ruby - 使用 Ruby 编写 Unity 游戏 - 2

    所以我看到unity支持c#、JS和Boo。我可以学习其中一个,但我想制作一个“编译器”或类似的东西,让我可以编写ruby​​代码并输出JS代码或制作一个可以被Unity编译器读取的层。这有可能吗?我愿意在这方面投入很多时间并且有相当多的经验。 最佳答案 如果您的问题实际上是“我如何将Ruby编译为JavaScript”,那么这更容易回答:Opal:RubytoJavaScriptcompiler但是,学习其中一种受支持的语言会更好。当运行的是用另一种语言解释的代码时,很难调试“您的”代码。

随机推荐