Unity3d的NavMesh信息导出与服务器端(KBEngine)的使用(二)

前言:

上篇已经讲述了Unity3d的客户端NavMesh导航信息的导出,现在一起看下怎么在服务器使用,因为我们使用的服务器引擎是KBEngine,以此为例

1.将生成的srv_xinshuocun文件放到服务器的资源目录下,确保在cell/Space使用addSpaceGeometryMapping()函数加载几何映射的时候能读取到该文件。

例如,在kbengine_unity3d_demo中,加入导航的时候,根据resPath的配置(spaces/kbengine_unity3d_demo),将srv_xinshoucun.navmesh文件放入到该文件夹下,服务器启动的时候,即可加载到该文件。

 

 2.加载几何映射的addSpaceGeometryMapping()函数中参数中,最后一个字典,表示给实体设置不同的layer参数,针对不同的layer,可以使用不同的navmesh文件进行导航。即同一个场景中可以使用多个navmesh进行导航,如果不使用最后的参数,默认会读取该文件夹下的所有navmesh文件。

spaceID

uint32,空间的ID,指定在哪个空间操作

mapper

目前填None

path

包含几何数据的目录路径 即srv_文件路径

shouldLoadOnServer

可选的boolean参数,指定是否在服务端上加载几何。默认为True

params

可选的PyDict参数,指定不同layer所使用的navmesh,例如:
KBEngine.addSpaceGeometryMapping(self.spaceID, None, resPath, True, {0 : "srv_xinshoucun_1.navmesh", 1 : "srv_xinshoucun.navmesh"})

 3.在服务端使用导航的时候,生成的实体,必须在在有效的导航区域内,即在NavMesh的地表上,如果在范围之外,导航会出错。

4.addSpaceGeometryMapping()加载过有效的navmesh文件,并且当前的实体在有效的导航区域的时候,实体的canNavigate()函数会返回True,说明当前是在Space中可以使用导航。

5.如果canNavigate()返回为True,可以导航,在服务器端使用navigate()函数,来让当前的实体向一个目标点移动,成功或者失败都会调用回调函数,类似于没有导航时候用的moveToPoint()函数。


猜你喜欢

转载自blog.csdn.net/mango9126/article/details/79390638