【Unity3D】RTS Engine-放置建筑-笔记七

本文详细介绍了Unity游戏开发中如何配置建筑预制件,包括建筑结构类型、建筑放置者组件、建筑工人管理器、BuilderUnit的设置,以及建筑放置管理器、边界设置和建筑放置规则。

目录

6.1 配置建筑预制件(Configure Building Prefab)

6.1.1 建筑结构类型

6.1.2 建筑放置者组件(Building Placer Component)

6.1.3 建筑工人管理器(Building Worker Manager)

6.2 构建单位(Builder Unit)

6.2.1 General

6.2.2 目标搜索/选择器(Target Search/Picker)

6.2.3 设置目标(Setting Target Tab)

6.2.4 处理进展(Handling Progress)

6.2.5 布置任务(Placement Tasks)

6.3 建筑放置管理器(Building Placement Manager)

6.3.1 所有派系建筑布局(All Factions Building Placement)

6.3.2 本地玩家阵营建筑放置(Local Player Faction Building Placement)

6.3.2.1 General Properties

6.3.2.2 Rotation Properties

 6.3.2.3 保持和刷出属性(Hold And Spawn Properties)

6.3.3 测试

6.4 设置边界(Setup Border)

6.4.1 配置领地(Configuring Border)

6.4.2 测试


6.1 配置建筑预制件(Configure Building Prefab)

6.1.1 建筑结构类型

找到 Building Manager 

  • Health: 建筑是由建造者建造和修复的,每个活跃的建造者定期为建筑增加生命值,直到达到最大生命值
  • Time: 建筑是由建造者在一定时间内积极建造并修复,直到达到最大生命值。活跃的并发构建器越多,构建构建所花费的时间就越少

6.1.2 建筑放置者组件(Building Placer Component)

选择 building_extension 子对象。这包括以下组件,使建筑有可能被放置在地图上。

  • Placable Terrain Areas: 可放置地形区域。定义建筑物可以放置的地形区域类型。当将此字段保留为空时,可以使用任何区域类型来放置地形。
  • Can Place Outside Border: 可以放置在外部边界。如果你按照这个初学者教程的顺序,我们还没有开始讨论边界组件。但是我们希望启用这个字段,否则建筑必须包含在其派系的领土内,使用我们尚未使用的边界来定义。
  • Can Place In Enemy Border: 当这个字段被启用时,建筑可以放置在敌方阵营的领土内,该领土是由我们尚未使用的边界定义的。
  • Ignore Layer Mask:放置建筑时忽略遇到的指定类型障碍
  • Place Audio: 当本地玩家(local player)放置此建筑时播放的音频。
  • Debug: 启用此选项可以在控制台上打印调试语句,每当本地玩家放置的建筑被移动到一个新的放置位置时,该语句就会被记录下来
    • Border: 边界。当边界要求被满足时为true,比如当建筑可以放置在边界外或当它正确地位于派系边界内时。
    • Map Terrain: 地图地形:当建筑物被放置在正确的地图地形区域时为真
    • Overlapped Colliders: 如果没有障碍物与建筑物碰撞,则没有任何内容;如果有碰撞器,则没有任何名称
    • Conditions: 条件。当满足所有建筑物放置条件时。

Building Placer组件需要附加到同一对象的两个附加组件(默认情况下应该已经附加):

  • Collider组件与Is触发器启用,使其他建筑物不能被放置在这个建筑物的碰撞。
  • 刚体组件,Use Gravity禁用,Is Kinematic启用。

6.1.3 建筑工人管理器(Building Worker Manager)

该组件负责允许建筑商单位在建筑物放置后进行建造,并在建筑物损坏时进行修复。

  • Code: 唯一代码标识
  • Worker Positions: 这个数组的大小表示可以同时建造建筑物的最大建造单位数量。当你让这个数组的元素为空时,工人单位将根据他们的位置和建筑物的位置选择最近的位置来建造建筑物。当使用transform赋值时,数组的元素将表示单元需要到达的静态位置,以便开始构建建筑物。
  • Forced Terrain Areas: 强制地形区域。当你有静态工人位置时(上面数组中的元素被分配),那么你可以定义地形区域类型,以确保在放置建筑物时静态工人位置位于特定的地形区域(具体来说,工人位置的高度被调整为地形区域的高度)。由于我们不使用静态构建器位置,那么我们也可以不分配此字段。
  • Define Max Amount / Max Worker Amount: 允许设置独立于“Worker Positions”字段的工人的最大数量。此字段的数量必须小于“Worker Positions”数组的大小。

6.2 构建单位(Builder Unit)

配置单位,来建造建筑物。给 tutorial_unit 添加 Builder 组件

Entity Component (Source: IUnit - Target: IBuilding)

该组件可附加到IUnit类型的实体(它引用单元实体使用的接口),并且它可以将IBuilding(用于构建实体的接口)作为其目标。

6.2.1 General

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值