之前做过一个家园系统,今天和大家分享的是,关于在做家园系统的时候遇到的一些问题和当时的解决的方法。

遇到的几个问题:

1. 地图层问题。

    (1)这些东西如何在场景中摆放:地面,围墙,小窝,人,未解锁区域等等。

    (2)地图大小限制和地图最小单位的大小等因素。

    (3)我们需要保存的数据有哪些。

      当时的解决方法:

      1)幻想的地图层,把地图分成好几块加载的。策划根据地图编辑器生成了对应的文件,底层加载地图的时候会加载这些地图。但是家园地图是一个全新的地图。而且不是地图编辑器编辑的。但是底层有不提供修改支持。因此原先那几块地图就用了空的文件进行修改。相当于进入这个场景的时候,是一个黑的世界。

       2)地面,围墙,小窝,人,未解锁区域等,所有的家园场景的东西,我们通过不同的层加载到场景里。写了一个HomeMapDrawObject.lua 下面是它的初始化函数

 1 function HomeMapDrawObject:__init()
 2     HomeMapDrawObject.number = HomeMapDrawObject.number + 1
 3     self.core_pos = cc.vec2(0, 0)
 4 
 5     --集合
 6     self.coreNodes = {}
 7  
 8     --保持对象应用,方可访问其成员方法
 9     self.spriteLayers = {}
10     -- self.spriteLayers[cc.RenderQueue.GRQ_SHADOW] = {}
11     -- self.spriteLayers[cc.RenderQueue.GRQ_BUILD_AND_PLAYER] = {}
12 
13     --草地
14     local gressNode = cc.Node:create()
15     self.coreNodes[HomeMapDrawObject.Layer.GRESS] = gressNode
16     HandleRenderUnit:GetCoreScene():addToRenderGroup(gressNode, cc.RenderQueue.GRQ_SHADOW)
17 
18     --阴影
19     local shadowNode = cc.Node:create()
20     self.coreNodes[HomeMapDrawObject.Layer.SHOADOW] = shadowNode
21     HandleRenderUnit:GetCoreScene():addToRenderGroup(shadowNode, cc.RenderQueue.GRQ_SHADOW + 1)
22 
23     --身体
24     local bodyNode = cc.Node:create()
25     self.coreNodes[HomeMapDrawObject.Layer.BODY] = bodyNode
26     HandleRenderUnit:GetCoreScene():addToRenderGroup(bodyNode, cc.RenderQueue.GRQ_BUILD_AND_PLAYER - 2)
27 
28     --其他
29     local otherNode = cc.Node:create()
30     self.coreNodes[HomeMapDrawObject.Layer.OTHER] = otherNode
31     HandleRenderUnit:GetCoreScene():addToRenderGroup(otherNode, cc.RenderQueue.GRQ_BUILD_AND_PLAYER - 1)
32 
33 end
View Code

相关文章:

  • 2021-09-22
  • 2021-12-18
  • 2021-10-02
  • 2021-12-27
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2021-11-19
  • 2021-08-24
  • 2021-12-13
  • 2021-12-23
相关资源
相似解决方案