tiledmap 图块属性_TiledMap 组件参考

TiledMap 组件参考

TiledMap(地图)用于在游戏中显示 TMX 格式的地图。

5c3fcf32ee82f344fc5bb3682a5e3605.png

点击 属性检查器 下方的 添加组件 按钮,然后从 渲染组件 中选择 TiledMap,即可添加 TiledMap 组件到节点上。

ade8b7cdfdc1b62fb17fe008c974ff1a.png

TiledMap 的脚本接口请参考 TiledMap API。

TiledMap 属性

属性

功能说明

Tmx Asset

指定 .tmx 格式的地图资源

详细说明

添加 TiledMap 组件之后,从 资源管理器 中拖拽一个 .tmx 格式的地图资源到 Tmx Asset 属性上就可以在场景中看到地图的显示了。

在 TiledMap 组件中添加了 Tmx Asset 属性后,会在节点中自动添加与地图中的 Layer 对应的节点。这些节点都添加了 TiledLayer 组件。请勿删除这些 Layer 节点中的 TiledLayer 组件。

49684e1e1e18c8b4d996e47ecabe5376.png

TiledMap 组件不支持 mapLoaded 回调,在 start 函数中可正常使用 TiledMap 组件。

TiledLayer 与节点遮挡

TiledLayer 组件会将添加到地图层的节点坐标转化为地图块行列坐标。当按行列顺序渲染地图层中的地图块时,如果该地图块的行列中存在节点,那么将会中断渲染地图块转而渲染节点。当地图块中的节点渲染完毕后,会继续渲染地图块。以此实现节点与地图层相互遮挡关系。

注意:该遮挡关系只与节点的坐标有关,与节点的大小无关。

下面通过一个范例来介绍 TiledLayer 如何与节点相互遮挡。

在场景中新建一个节点并添加 TiledMap 组件,设置好 TiledMap 组件属性后会自动生成带有 TiledLayer 组件的节点(即地图层)。

创建 预制资源 以便在场景中实例化出多个节点。

在 资源管理器 中新建一个 JavaScript 脚本,编写组件脚本。脚本代码如下:

cc.Class({

extends: cc.Component,

properties: {

// 用于实例化节点的预制体

prefab:{

type: cc.Prefab,

default: null,

},

// TiledLayer 组件

tiledLayer: {

type: cc.TiledLayer,

default: null,

},

},

start () {

// 开发者可根据需求设置节点位置

let posArr = [cc.v2(-249, 96), cc.v2(-150, 76), cc.v2(-60, 54), cc.v2(-248, -144), cc.v2(-89, -34)];

for (let i = 0; i < posArr.length; i++) {

let shieldNode = cc.instantiate(this.prefab);

// 可任意设置节点位置,这里仅作为示范

shieldNode.x = posArr[i].x;

shieldNode.y = posArr[i].y;

// 调用 TiledLayer 组件的 addUserNode 方法,可将节点添加到对应的地图层中,并与地图层产生相互遮挡关系。

this.tiledLayer.addUserNode(shieldNode);

}

},

});

将脚本组件挂载到 Canvas 节点上,即将脚本拖拽到 Canvas 节点的 属性检查器 中。再将 层级管理器 中自动生成的带有 TiledLayer 组件的节点以及 资源管理器 中的预制资源拖拽至脚本组件对应的属性框中,然后保存场景。

点击编辑器上方的预览按钮,即可看到节点与地图层相互遮挡的效果。关于代码可参考 ShieldNode 范例。

47ffda9199f0c92484db4103bae0bdba.png

若想移除地图层中的节点,调用 TiledLayer 的 removeUserNode 方法即可。

TiledMap 关闭裁剪

cc.macro.ENABLE_TILEDMAP_CULLING = false;

如果需要旋转地图或者把地图置于 3D 相机中,则需要关闭裁剪。另外,如果地图块不是非常多,如小于 5000 块,那么关闭裁剪还能减少 CPU 的运算负担,GPU 直接使用缓存进行渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值