高自由度沙盘游戏地图生成 - 我的世界Minecraft(基于Unity5.6)

默认教学计划
4438人加入学习
(18人评价)
价格 免费
教学计划

事件触发:

方块的新增

删除

 

[展开全文]

在coliderEventsSender里面,获取的voxelInfo是本身所在的位置,而实际应该获取的是本身所在位置脚下的那个位置。解决方法,应该是从本身所在的位置往下投影一个射线,得到脚下的位置

onBlockEnter只触发一次

 

[展开全文]

volex是block的一个方法和属性

volexInfo是小块block在大块中的信息,包含位置信息。

[展开全文]

scripting reference:api手册   6个主要类

mesh

 

 

crosshair:第一人称准星

[展开全文]

准心:Height:2:Width:20 不接受鼠标事件Raycast Targer去除勾选

[展开全文]

Camera Event触发OnPlay()、MouseDown、Up和按住的事件,分别有2种形式,一个是摄像机中心点,一个是鼠标为准心。

 

[展开全文]

VoxelInfo 是位于一个Chunk中的小块,记录了位置(x,y,z)相对于所在Chunk位置和所在Chunk索引、小块的贴图索引号

GetVoxel就是获取小块

[展开全文]

UniBlocks

Transparency 设置透明度

第一个 不透明

第二个 半透明

第三个 全透明

Collider 选择碰撞器,特殊形状碰撞器要选Mesh。默认需要碰撞是Cube,不需要碰撞的选择None

[展开全文]

define side texture 若方块四周都一样,则不需要√上,否则反之。

坐标代表贴图所在位置,左下角为(0,0)

而勾上之后,每个面都可设置,分别是上下,左右,前后

Material index 材质球索引号

因为材质球可以设置多个,即如果你一个材质球不够用了,可以设置多个,在UniBlockObject的ChunkObject的Chunk中的Mesh Renderer中可设置多个材质球,每个材质球用的是8*8的贴图,即指定一个Block的材质先是由这个index找到材质球,再从该材质球上获取其中一个小贴图。

 

Mesh对形状的扩展

Define Side Texture对物体每个面的贴图扩展

Material index对贴图数量的扩展,即一个材质球(64种小贴图)不满足你的需求,可再增加,增加新的材质球后,是用index索引号区分每个材质球的。相当于数组

[展开全文]

UniBlocks

Custom mesh 不勾上 使用默认mesh立方体

特殊的物体都需要勾上这个,使用自定义的mesh。Mesh渲染物体时使用的网格,是许多个由三角形组成的网格,往往一个物体都会有Mesh Renderer组件用于渲染物体,而渲染物体需要Mesh和材质球,用于管理Mesh的就是MeshFiler

勾上后将自定义的Mesh放在Mesh上,Mesh Rotation是旋转,0°None下面的几个分别是180°、90°、270°

[展开全文]

Texture unit 贴图比例,1/8即 保存8*8个小方块材质,统一进行设置,若需添加新材质,则将材质弄成一样的小块放入到8*8贴图的空白处即可。生成8*8贴图也要严格按照8*8的比例,mesh网格类型的碰撞面,collider即碰撞面(碰撞器),2个√上就有网格类型的碰撞器,没勾上就没有那个效果,玩家不可以站到场景上,第三个边框属性。

[展开全文]

save/load voxel data 本地数据加载

若不勾上,本地数据不会被加载而是重新创建世界,若勾上了,会以之前的世界数据来加载,若之前的世界都没有 则是创建世界而已。

[展开全文]

Engine Settings修改完后 修改名字,以适应新的设置

[展开全文]

World Name保存游戏场景的文件名

若有新的世界生成会产生新的文件用于保存这个世界的信息。

Window->Uniblocks:Engine Settings的Chunk Spawn distance 是表示Chunk loader(玩家)周围生成Chunk的半径(动态),以玩家为圆心,用Chunk作为单位生成一个半径为这个Spawn Distance的圆。

Chunk despawn distance:表达离玩家生成边界+despawn distance距离的Chunk会被消除。

即spawn为8 despawn为3时,那么离玩家11的Chunk会被消除。

Spawn越小生成的地图占用内存越小,但是相对低性能要求高,因为生成和销毁Chunk频繁,而despawn是越低的话 ,要求性能越高,内存越小,否则反之。

一般保持默认即可。这个东西随着插件的导入而生成,若没有Engine在场景上的话,就没有这个Uniblocks:Engine Settings选项。

[展开全文]

Chunk loader就是Chunk生成的位置(x,y)

但是z默认是0,Chunk Loader的z=0的话肯定在生成地图的下面,所以改动chunk loader的z等于50左右即可,地图最高48

[展开全文]

Block Volex代表小块类(每种都有)

VolexInfo代表场景中已生成的小块实例,比Block Volex多了位置信息而已

小块实际上只是一个Cube加贴图,每种类型小块基本上是贴图不同,除了门、草之类的。

[展开全文]

方块生成的组织管理方式:

Engine引擎 保存整个地图的信息,实现保存功能和生成大块,大块中产生小块。 

ChunkManager管理管理全部Chunk

Chunk管理每一个它自身的每一个小块的全部信息

实际上,VolexInfo脚本管理Chunk的每一个小块Block信息(位置、类型)

Voxel脚本有每种Block对象的基本信息和行为(增添、删除等)。

[展开全文]

info.chunk.VoxelIndexToPosition(info.index);

[展开全文]

Camera.main.ScreenPointToRay(Input.mouPosition);

[展开全文]

Transparency:控制透明度;Solid:不透明;Semi Transparent:半透明;Transparent:全透明 内部没有细节。

[展开全文]

授课教师

Founder & Programer

课程特色

图文(1)
下载资料(1)
视频(26)