首页 > 编程语言 > 详细

unity的Tilemap学习笔记

时间:2019-10-05 00:06:12      阅读:322      评论:0      收藏:0      [点我收藏+]

  1,如果要实现当tilemap里面的格子与其他的对象发生碰撞后,消除碰撞的那个格子,使用如下代码。

void OnCollisionEnter2D(Collision2D collision)
    {
        Vector3 hitPosition = Vector3.zero;
        if (tilemap != null && tilemapGameObject == collision.gameObject)
        {
            foreach (ContactPoint2D hit in collision.contacts)
            {
                hitPosition.x = hit.point.x - 0.01f * hit.normal.x;
                hitPosition.y = hit.point.y - 0.01f * hit.normal.y;
                tilemap.SetTile(tilemap.WorldToCell(hitPosition), null);
            }
        }
    }

  其中,tilemap就是发生碰撞的tilemap对象,代码来自,unity的github https://github.com/Unity-Technologies/2d-techdemos/tree/2018.2

2,如何给unity的tileMap里的cell添加特定的属性。

做法就是写一个类,继承至TileBase,然后这个类你可以写任何你可以自定义的函数。

但值得注意的是,这里创建的是一个模板,我们依然无法让2个一样模板的tile状态不同。

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;

[CreateAssetMenu]
public class MarkTile : TileBase
{
    public string markType = "";
    public Sprite look;

    public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
    {
        tileData.sprite = look;
        base.GetTileData(position, tilemap, ref tileData);
    }
}

  加完之后,就可以在游戏界面的Assets--create 里面看到这个叫做markTile的资源创建选项了。

tileData.sprite = look;

  这句很关键,是可以让你设置你这个自定义的tile在地图上的显示图片的。

unity的Tilemap学习笔记

原文:https://www.cnblogs.com/beatless/p/11623709.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!