unity2018使用tileMap生成地图 类似泰拉瑞亚创建和销毁地图块
参考网站:https://blog.csdn.net/pz789as/article/details/79540890
tilemap大小设置
方法1:

Grid的Cell Size = 图片像素 * 0.01 同时图片的Pixels Per为100
方法2:
Grid的Cell Size 为 1 ,图片的Pixels Per = 图片像素宽高

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps; public class CreateTileMap : MonoBehaviour { public Tilemap tilemap;//引用的Tilemap
public Tile baseTile;//使用的最基本的Tile,我这里是白色块,然后根据数据设置不同颜色生成不同Tile
Tile[] arrTiles;//生成的Tile数组
void Awake()
{
//ins = this;
}
void Start()
{
StartCoroutine(InitData());
}
void Update()
{
//销毁墙体
if (Input.GetMouseButtonDown())
{
Vector3 mousePosition = Input.mousePosition;
Vector3 wordPosition = Camera.main.ScreenToWorldPoint(mousePosition);
Vector3Int cellPosition = tilemap.WorldToCell(wordPosition);
//tilemap.SetTile(cellPosition, gameUI.GetSelectColor().colorData.mTile);
TileBase tb = tilemap.GetTile(cellPosition);
if (tb == null)
{
return;
}
//tb.hideFlags = HideFlags.None;
Debug.Log("鼠标坐标" + mousePosition + "世界" + wordPosition + "cell" + cellPosition + "tb" + tb.name);
//某个地方设置为空,就是把那个地方小格子销毁了
tilemap.SetTile(cellPosition, null);
//tilemap.RefreshAllTiles();
} //空白地方创造墙体
if (Input.GetMouseButtonDown())
{
Vector3 mousePosition = Input.mousePosition;
Vector3 wordPosition = Camera.main.ScreenToWorldPoint(mousePosition);
Vector3Int cellPosition = tilemap.WorldToCell(wordPosition);
//tilemap.SetTile(cellPosition, gameUI.GetSelectColor().colorData.mTile);
TileBase tb = tilemap.GetTile(cellPosition);
if (tb != null)
{
return;
}
//tb.hideFlags = HideFlags.None;
//Debug.Log("鼠标坐标" + mousePosition + "世界" + wordPosition + "cell" + cellPosition + "tb" + tb.name);
//格子填充
tilemap.SetTile(cellPosition, baseTile);
//tilemap.RefreshAllTiles();
}
} /// <summary>
/// 地图生成
/// </summary>
/// <returns></returns>
IEnumerator InitData()
{
//大地图宽高
int levelW = ;
int levelH = ; int colorCount = ;
arrTiles = new Tile[colorCount];
for (int i = ; i < colorCount; i++)
{
//想做生命墙,需要自己做个数据层,对应索引id就行
arrTiles[i] = ScriptableObject.CreateInstance<Tile>();//创建Tile,注意,要使用这种方式
arrTiles[i].sprite = baseTile.sprite;
arrTiles[i].color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), );
}
for (int i = ; i < levelH; i++)
{//这里就是设置每个Tile的信息了
for (int j = ; j < levelW; j++)
{
tilemap.SetTile(new Vector3Int(j, i, ), arrTiles[Random.Range(, arrTiles.Length)]);
}
yield return null;
} while (true)
{
yield return new WaitForSeconds();
// int colorIdx = Random.Range(0, colorCount);//前面这个是随机将某个块的颜色改变,然后让Tilemap更新,主要用来更新Tile的变化
// arrTiles[colorIdx].color = new Color(Random.Range(0f, 1f), Random.Range(0f,1f), Random.Range(0f, 1f), 1);
// tilemap.RefreshAllTiles(); Color c = tilemap.color;//这里是改变Tilemap的颜色,尝试是否可以整体变色
c.a -= Time.deltaTime;
tilemap.color = c;
}
} }
unity2018使用tileMap生成地图 类似泰拉瑞亚创建和销毁地图块的更多相关文章
- 泰拉瑞亚Linux主机打造指南
最近玩了泰拉瑞亚,一个2D版的我的世界,但苦于steam的联机太过不靠谱,经常会出现和朋友之间联机失败的问题,所以我把服务器放到了部署我博客的服务器,这样就可以通过IP直接让好友加入游戏了! 首先是购 ...
- Terraria(泰拉瑞亚)存档覆盖(Linux)
这是一篇关于游戏的不正经博客 ~ 游戏介绍: <泰拉瑞亚>是由Re-Logic公司开发的一款高自由度的沙盒游戏,于2011年5月16日在PC上发行. 玩家可以在游戏中做很多事情:制造武器战 ...
- [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码
MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...
- 创建用户故事地图(User Story Mapping)的8个步骤
[小编]上周六了解了用户故事地图后,小编又查阅了一些资料,找到了以下这篇关于如何组织用户故事地图规划的文章,分享给大家.也希望大家如果有好的实践,也可以留言一起交流. 原文地址:http://winn ...
- MATLAB地图工具箱学习总结(三)地图工具箱的基本知识
MATLAB地图工具箱学习总结(三)地图工具箱的基本知识 今天想要介绍的是一些比较基础的函数.了解了这些函数,地图投影的基本概念才能真正明白.而要想继续研究MATLAB中有关地图投影的函数,尤其是未来 ...
- 【高德地图API】如何打造十月妈咪品牌地图?
原文:[高德地图API]如何打造十月妈咪品牌地图? 摘要:品牌地图除了地图,商铺标点外,还有微博关注,路线查询等功能. ---------------------------------------- ...
- 【百度地图API】如何利用PhoneGap制作地图APP
原文:[百度地图API]如何利用PhoneGap制作地图APP 摘要:百度地图API是一套由javascript编写的地图程序接口,按说它应该运行在浏览器上.现在,只要利用PhoneGap,我们就能开 ...
- 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库
原文:如何利用[百度地图API],制作房产酒店地图?(下)--结合自己的数据库 摘要:应广大API爱好者要求,写了一篇利用自己数据库标点的文章…… -------------------------- ...
- 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
原文:[百度地图API]你看过房产地图吗?你知道房产标注是如何建立的吗? 你是不是看过很多房产网站?例如安居客,新浪乐居. 你是不是也想做一个能写文字的标注? 你知道怎么去实现麼? 其实,上图这样的标 ...
随机推荐
- SharpMap入门教程
SharpMap是一个基于.NET Framework 4,采用C#开发的地图渲染引擎,非常易于使用.本教程针对SharpMap入门及开发,讲述如何基于SharpMap组件渲染Shapefile数据. ...
- Hierarchical Z-Buffer Occlusion Culling
While I was at GDC I had the pleasure of attending the Rendering with Conviction talk by Stephen Hil ...
- 带你玩转Visual Studio——带你高效开发
VassistX的简单介绍与下载安装 简单介绍 VassistX的全称是Visual Assist X,是whole tomato开发的一个非常好用的插件,可用于VC6.0及Visual Studio ...
- 模糊查询中Like的使用
通配符: %. _ %:表示任意个或多个字符.可匹配任意类型和长度的字符 _:表示任意单个字符.匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符) demo: //usern ...
- Docker容器基础认知
## 一. [docker](http://www.itxdm.me/archives/tag/docker/)概念 [Docker](http://www.itxdm.me/wp-content/p ...
- android开发如何获取res/raw和assets文件夹的路径
---恢复内容开始--- android开发如何获取res/raw和assets文件夹的路径,主要分为两种情况: 1.如果你只是拷贝动作,那么你只需要得到res/raw和assets文件输入流就可以, ...
- P3952 时间复杂度
P3952 时间复杂度 题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机 ...
- ajax 常用格式
$.ajax({ url: "/", //请求路径 type: "post",//请求方式 data: "json", //发送请求的数据格 ...
- js 鼠标拖拽效果实现
效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 使用Mondrian Virtual OLAP Cube 实现星座模型并在saiku展现分析
1.什么是星座模型? 2.哪些地方可以用到星座模型? 3.Mondrian怎么构建星座模型,构建过程又涉及到哪些理论概念. 答1:这里描述了维度模型常用的 星型.雪花.星座模型,简而言之就是多事实表模 ...