HoneyFramework蜂巢框架六边形生成unity地图使用指导基础

1.开放测试场景(目录:HoneyFramework/testScene)

测试场景包含3个元素:

  1. WorldOven(这部分是在地形生成期间使用,然后它被摧毁)
  2. World(包括相机在内的所有世界内容都存储在其中)
  3. Game(管理者和游戏循环更新的地方)

选择“World”脚本查看其Inspector信息。

如果你想有一个更大的世界,你应该增Hex(六边形盘)半径和chunk(块)半径。

如果你的世界是由大量的hexes(六边形)组成的,它们将存在于游戏内存中并可以被用于所有的计算,但是可视化由chunk(块)的数量决定。

另一方面,如果你有太多的chunk(块),但相对较少的hex(六边形盘)制径,方块没有包含任何不会被创建的Hexes(六边形)。

如果块内有任何空的空间剩余,它的边界将被填充六边形(在地形编辑器中设置)。

不要输入超过40的六宫格盘半径(总计约为5000小六边形),除非你想建立一个巨大的(消耗内存)世界。有关详细信息,请参阅高级教程。

2.准备前景图集

2.1使用包中提供的foreground

拖放目录:HoneyFramework/Foreground/Foreground 对象到世界的(图片)的前台图集区域用于UFTAtlasMetadata

2.2使用自定义foreground
要添加自定义的精灵体到图集中你首先必须打开Window-> UFT Atlas Editor

– name:将Foreground更改为您喜欢的图集名称
– 在图集中找到您想要的图片,并将它们拖放到图集编辑器中
– 将边框大小设置为至少1或2像素
– 按下auto align & size 按键自动为所有的精灵体选择最佳的纹理大小

或者,如果您想手动设置图集大小,请按align(对齐)按钮。如果align被处理成功(align(对齐)按钮下面的注释会提示)你可以试着用一个小点的texture,如果不成功就尝试使用一个更大的。

下一步是为每个精灵体设置正确的锚点。默认情况下,锚点设置在中间底部,但它可能并不总是最好的设定。

在Honey 1.1版本中,我们添加了调整锚点位置的选项

只需要将鼠标悬停在精灵窗口上,可以看到精灵的边界和当前锚点。


单击并拖动橙色点以设置一个新的锚点位置。如果精灵非常小,你可以-在Atlas工具窗口中间的下拉菜单中选择Drag Pivot Only锁定精灵的位置以避免意外移动它。如果你只想要移动精灵,你也可以锁定锚点位置。

如果你对texture大小和锚点满意,按下save。Atlas的定义将与纹理一起创建在Assets根目录中。移动他们存储到你想要的目录。

选择场景中的World对象,并将新的atlas资源拖放到ForegroundAtlas。

3.准备地形数据

-打开Honey Terrain编辑器(Window->Honey->Terrain Editor)
-按"Reload Definitions”;如果它是第一个使用你的地形xml文件将生成
流媒体assets文件夹。

将显示与下面类似的窗口。

3.1.1使用预先准备好的地形,你不需要做任何事情。

3.1.2使用您准备的新地形:
•按“x”从列表中删除旧的地形类型。
•按下绿色大按钮“+”添加新的地形定义。
•你需要至少一个其中有一系列河流textures和“Is River Type”设置的地形在第一列
•你需要至少一个其中有一组纹理和“Is Border Type”设置的地形在第一列
•任意数量的其他地形类型
3.2请注意:
• Diffuse是地形的颜色texture
• Height是地形的形状定义,颜色介于黑白之间(这是RGB 127/127/127)
• 混合器是用来定义重要区域地形的优势纹理。六边形与六边形通过混合器和六边形中心的距离相互混合距离保持一致。
3.3使用前景选择器在这种地形类型中选择你想要的树
树是从前景地图集上取下来的。然后为每种树类型设置实例数量。任何一种地形类型中树
的数量不应超过200。

4. 按下 play 然后按下 “Generate World” 按键

制作地形textures数据需要一些时间,这取决于设备性能和世界规模。

5.切换到directx9模式

要切换到dx9模式(可以在android上运行),你需要在HoneyFramework.MHGameSettings.xml中切换一个设置。这个文件位于Assets/StreamingAssets文件夹中,或者丢失了,你可以在HoneyFramework/Resource文件夹中修改源代码设置。打开

然后简单地将<dx11Mode>true</dx11Mode> 改为 false

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,使用Unity ECS框架生成可移动的NPC需要以下步骤: 1. 创建NPC实体: 使用ECS框架,你需要创建一个Entity,这个Entity会成为NPC的基础,你可以在这个Entity上添加组件,例如Transform组件,这个组件会控制NPC的位置和旋转等信息。 2. 添加可移动组件: 为了让NPC可以移动,你需要添加一个可移动组件,这个组件会控制NPC的速度和方向等信息。通常这个组件会包含一个Vector3类型的变量,用来存储NPC的移动方向和速度。 3. 控制NPC的移动: 在ECS框架中,你需要编写一个System来控制NPC的移动。你可以使用Unity提供的TransformSystem来控制NPC的位置和旋转,也可以编写自己的System来控制NPC的移动。在System中,你需要获取NPC实体和可移动组件,并根据可移动组件中的移动方向和速度信息来控制NPC的移动。 4. 大量生成NPC: 使用ECS框架,你可以通过编写System来生成大量的NPC。你可以编写一个System,控制生成NPC的数量和位置,并在生成NPC时添加NPC的Entity和组件。 下面是一个简单的代码示例: ```csharp using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; public class NPCMovementSystem : SystemBase { protected override void OnUpdate() { float deltaTime = Time.DeltaTime; Entities.ForEach((ref Translation translation, in NPCMovementComponent movement) => { translation.Value += movement.Direction * movement.Speed * deltaTime; }).Schedule(); } } public class NPCSpawnerSystem : SystemBase { protected override void OnUpdate() { Entity npcPrefab = GetSingleton<NPCPrefabComponent>().Prefab; int spawnCount = GetSingleton<NPCSpawnCountComponent>().Count; float3 spawnPosition = GetSingleton<NPCSpawnPositionComponent>().Position; EntityManager.Instantiate(npcPrefab, spawnCount, Allocator.Temp); Entities.ForEach((Entity entity, int entityInQueryIndex) => { EntityManager.AddComponentData(entity, new Translation { Value = spawnPosition }); EntityManager.AddComponentData(entity, new NPCMovementComponent { Direction = math.forward(), Speed = 5 }); }).Schedule(); } } ``` 在上面的代码中,我们创建了两个System,一个用于控制NPC的移动,另一个用于生成NPC。在NPCMovementSystem中,我们使用ForEach来迭代所有带有NPCMovementComponent组件的实体,并根据组件中的移动方向和速度信息来控制移动。在NPCSpawnerSystem中,我们获取了生成NPC所需的信息,并使用EntityManager.Instantiate和ForEach来生成大量的NPC实体,并为它们添加NPCMovementComponent组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值