精灵-地图

简介

1 .在一个屏幕上同时渲染数千个动画精灵时使用,通常是2d游戏时需要
2 .SpriteMap 显示在标准平面网格上,并具有在3d空间中变化的能力
3 .每个SpriteMap都是一个绘制调用,并在内存中至少保留3个纹理缓冲区,具体取决于系统中的层数
4 .

新建一个SpriteMap

1 .var spriteMap = new BABYLON.SpriteMap(name, atlasJSON, spriteTexture, options, scene);

1 .name:这个精灵地图的名称
2 .atlasJSON:精灵地图使用的地图集JSON文件
3 .spriteTexture:精灵地图使用的地图集贴图配置
4 .options:初始化选项
5 .scene:此地图添加的场景

2 .options对象参数

1 .stageSize:创建地图的大小 Vector2(1,1)
2 .outputSize:输出平面大小的Vector2(1,1)
3 .outputPosition:以世界系统为基准的输出平面的位置
4 .outputRotation:输出平面的旋转角度
5 .layerCount:系统中的层数
6 .maxAnimationFrames:地图上任何动画的最大帧数
7 .baseTile:地图中初始图块的帧id
8 .flipU:布尔值类型,用于计算触发翻转地图的垂直结果
9 .colorMutiply:他将和地图的最终颜色相乘

3 .初始化之后,可以通过引用spritemaps.position来更改输出的旋转和位置

改变特定图块的位置

1 .spriteMap.changeTiles(layerID, tileID, frameID)

1 .layerID:系统目标层的整数
2 .tileID:替换目标的位置
3 .frameID:替换成为的精灵的帧id。也就是要拿这个去替换前一个
4 .注意2这个参数可以是一个数组,一次把这些地方的元素都替换成3所代表的元素,这里是支持的

2 .保存创建好的地图

spriteMap.saveTileMaps()
//可以返回一个.tilemaps文件,下次使用的时候,可以直接加载这个文件。也就是说可以预先计算好这些,下一次就直接加载就行。

SpriteMap动画

1 .spriteMap.addAnimationToTile(frameID, animationFrame, nextFrameID, animationFrameDisplayTiming, globalSpeed)

1 .frameID:想要他发生动画的帧id
2 .animationFrame:要为其分配数据的动画帧的整数 如果参数是1的话,就表示第一帧
3 .nextFrameId:动画中下一个精灵帧的整数id ,如果上面参数是1的话,这个就表示该动画第一帧所用的精灵图
4 .animationFrameDisplayTiming:动画帧的显示时间在0-1之间浮动。
5 .globalSpeed:动画速度的浮动标量

2 .所以每一个想要让他动起来的东西,都会连续定义好几帧,让他们组合起来,就变成了动画
3 .如果多个层使用相同的数据,那么只需要组成一次动画,就可以直接映射到另一个系统,并且将他的动画传播出去
4 .spriteMap1.animationMap = spriteMap0.animationMap
5 .spriteMap1.animationMap = spriteMap0.animationMap

你可能感兴趣的:(精灵-地图)