Unity精灵系统 之 动态控制TileMap

本文仅作笔记学习和分享,不用做任何商业用途

本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正

1.TileMap &TileBase

Unity - Scripting API: Tilemap ,看手册内容太多了故介绍几个常用的公共方法

首先,搞清楚对象,TileMap的变量就是控制这个东西

其次,知道TileBase的变量是最基本的瓦片,就像是gameobjcet一样是unity最小的活动单位

动态设置瓦片

注意我的瓦片地图上空出了两个格子,他俩的坐标在右上角(-1,3,0)和(-1,2,0)

我设置了两个瓦片,拖入了相应的资源,创建了一个tilemap变量利用其中的公共方法

public class ContalTileMap : MonoBehaviour
{
    public Tilemap tilemap;
    public TileBase tile1;
    public TileBase tile2;
    private void Start() {

        //将指定坐标设置成你想要的瓦片
        tilemap.SetTile(new Vector3Int(-1,3,0), tile1);
        tilemap.SetTile(new Vector3Int(-1, 2, 0), tile2);     
    }
}

动态得到瓦片坐标

tilemap.GetTile(new Vector3Int(0, 0, 0));

动态删除瓦片 

tilemap.SetTile(new Vector3Int(-1, 2, 0),null);

批量替换瓦片

参数1是要被替换的瓦片,参数2是替换成什么样子的瓦片

tilemap.SwapTile(tile1, tile2);

清除所有瓦片

tilemap.ClearAllTiles();

 2.Grid

实际上,瓦片地图不只是瓦片,还有网格,所以也可以用Grid类去创建变量,和使用其方法

如果想要屏幕坐标转为网格坐标,可以先使用世界坐标转屏幕坐标的api

Vector2 mousePos = Input.mousePosition;
Vector3 worldPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 0));

之后世界坐标转网格坐标

Vector3Int gridPos = tilemap.WorldToCell(worldPos);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值