For the complete documentation index, see llms.txt. This page is also available as Markdown.

头像修饰区域

在场景中的某个区域内隐藏头像、隐藏姓名标签,或禁用玩家护照

当头像在场景中移动时,它们在整个 Decentraland 中的行为和外观都保持一致。不过,你可以添加一个 AvatarModifierArea 到场景中的某个区域,以影响玩家头像进入该区域时的行为。

放置头像修改区域

添加一个带有 AvatarModifierArea 组件的实体,并使用一个 Transform 组件。

const entity = engine.addEntity()

AvatarModifierArea.create(entity, {
	area: Vector3.create(4, 3, 4),
	modifiers: [AvatarModifierType.AMT_HIDE_AVATARS],
	excludeIds: []
})

Transform.create(entity, {
	position: Vector3.create(8, 0, 8),
})

在创建一个 AvatarModifierArea 组件时,你必须提供以下内容:

  • 区域:修饰区域的大小

  • modifiers:一个列出要在该区域中实现的修改器的数组。此属性使用来自 AvatarModifierType 枚举。

支持的修改器有:

  • AvatarModifierType.AMT_HIDE_AVATARS

  • AvatarModifierType.AMT_DISABLE_PASSPORTS

  • AvatarModifierType.AMT_HIDE_NAMETAGS

一个……的所有效果 AvatarModifierArea 只会在其区域范围内生效。玩家走出该区域后会恢复正常。

一个 AvatarModifierArea 只会影响位于区域内的玩家。进入该区域不会影响区域外其他玩家的可见方式。

一个……的效果 AvatarModifierArea 是针对每个玩家在本地计算的。你可以拥有一个 AvatarModifierArea 只对某些玩家出现在场景中,而对其他玩家则不会。例如,你可以制作一个“马可波罗”游戏,在这个游戏里,场景中只有一名玩家拥有一个会隐藏所有其他玩家的修改区域。所有在其本地版本场景中没有该修改区域的其他玩家都能正常看到彼此。

如果该区域会隐藏头像,那么在其本地版本场景中没有该区域的玩家将正常看到所有头像,甚至包括那些自己感觉被隐藏的头像。拥有该区域的玩家在进入后,会感觉自己和所有其他头像都受到了该区域的影响。

隐藏头像

当玩家走进一个 AvatarModifierArea 并且带有 AvatarModifierType.AMT_HIDE_AVATARS 修改器时,该玩家的头像将停止渲染。这既适用于第三人称视角下的玩家,也适用于其他玩家走入该区域时。

这让你可以用任何你想在场景中展示的自定义头像替换默认的 Decentraland 头像,参见 替换玩家头像。请注意,如果你想看到其他玩家使用自定义头像,你需要自行处理玩家位置同步。

禁用证件弹窗

当玩家走进一个 AvatarModifierArea 并且带有 AvatarModifierType.AMT_DISABLE_PASSPORTS 修改器后,点击他们将不再打开显示玩家简介、库存等信息的证件 UI。

这在某些游戏中特别有用,因为意外打开该 UI 可能会打断游戏流程,例如多人射击游戏。

隐藏姓名标签

当玩家走进一个 AvatarModifierArea 并且带有 AvatarModifierType.AMT_HIDE_NAMETAGS 修改器后,玩家的姓名标签会被隐藏,而头像本身仍然可见。

这适用于舞台、演示或脚本场景,在这些场景中你希望隐藏玩家姓名标签而不隐藏头像本身。例如,在表演期间你可能希望获得更干净的视觉体验,让头像可见但悬浮名字不会分散观众注意力。

AMT_HIDE_NAMETAGS 也会隐藏通过 头像名牌 组件。

💡 提示: AMT_HIDE_AVATARS 已经会连同头像一起隐藏姓名标签,因此你无需再添加 AMT_HIDE_NAMETAGS 时使用 AMT_HIDE_AVATARS。使用 AMT_HIDE_NAMETAGS 仅当你想在保持头像可见的同时隐藏姓名标签时使用。

你可以将 AMT_HIDE_NAMETAGS 与其他修改器一起,例如 AMT_DISABLE_PASSPORTS 作用于同一个区域:

💡 提示:姓名标签只会在玩家的头部或躯干位于该区域内时隐藏。如果区域太矮,而玩家通过二段跳越过它,姓名标签会短暂重新出现。请将区域设置得足够高,以覆盖预期的移动范围。

排除头像

你可以通过将玩家 ID 添加到 excludeIds 修改区域的数组属性中,来将一组玩家排除在修改区域影响之外。

此示例会隐藏某个区域内的所有头像,但指定 ID 的玩家除外。例如,你可以在直播活动中使用它,只显示舞台上的活动主持人,并隐藏任何跳上舞台的其他玩家。

修改区域会在每个玩家的实例中本地运行。排除 ID 列表可以因玩家而异。在下面的示例中,每个玩家都会将自己的 ID 从一个隐藏头像的修改器中排除,这样他们就只能看到自己的头像,而看不到其他人的。

调试修改区域

仅根据代码,很难确切知道修改区域覆盖了场景中的哪些部分。视觉反馈会很有帮助,可以确认它们放置得是否合适。

要验证一个 AvatarModifierArea 或 CameraModeArea的位置,请给持有它的实体添加一个 MeshRenderer 组件,并带有一个 盒体 形状,并将缩放设置为与 区域 修改区域相同的大小。

要激活修改区域的效果,玩家的头部或躯干必须进入该区域。如果只有玩家的脚在区域内,则不会生效。请确保玩家不能轻易通过跳跃绕过该区域。

💡 提示:有关可运行的示例,请参见 9,99-修饰区域 测试场景,它结合了 AvatarModifierArea 与运行时修改的 excludeIds、以及 10,99-avatar-modifier-hide-nametags,它隔离了 AMT_HIDE_NAMETAGS 修改器。

最后更新于