全站通知:
Entities tags
刷
历
编
阅读
2023-08-26更新
最新编辑:TrimesS_
阅读:
更新日期:2023-08-26
最新编辑:TrimesS_
跳到导航
跳到搜索
实体可以使用字符串标签标记。这些标签是联网的,因此也可在客户端上查询。
实体标签(在大多数情况下)会自动传播到实体的所有物理形状中,然后用于确定哪些形状应该相互碰撞。
游戏开发者可以在游戏项目设置中设置哪些标签会相互碰撞。
设置标签
// 在实体上设置一个标签
player_entity.Tags.Add( "player" );
// 在实体上设置多个标签
enemy_entity.Tags.Add( "enemy", "threat" );
// 程序化更新标签(true则添加,false则移除)
door_entity.Tags.Set( "locked", IsLocked() );
// 删除标签
enemy_entity.Tags.Remove( "threat" );
查询标签
if ( enemy.Tags.Has( "threat" ) )
{
// 逃跑
}
在追踪中使用
// 只击中带有世界标记的实体
tr = Trace.Ray( startpos, endpos )
.WithTag( "world" )
.Run();
// 击中带有威胁的敌人
tr = Trace.Ray( startpos, endpos )
.WithAllTags( "enemy", "threat" )
.Run();
// 击中敌人或玩家
tr = Trace.Ray( startpos, endpos )
.WithAnyTags( "enemy", "player" )
.Run();
// 击中除玩家以外的任何物体
tr = Trace.Ray( startpos, endpos )
.WithoutTags( "player" )
.Run();
// 击中除玩家和世界以外的任何物体
tr = Trace.Ray( startpos, endpos )
.WithoutTags( "player", "world" )
.Run();
检测变化
protected override void OnTagAdded( string tag )
{
}
protected override void OnTagRemoved( string tag )
{
}