33 lines
1.2 KiB
Markdown
Raw Normal View History

2024-05-16 17:18:33 +08:00
# 前言
2024-05-24 17:55:01 +08:00
继承关系BP_XXX_Base -> BP_Idol_Base -> TsIdolActor -> AVCharacter -> ACharacter 。
2024-05-16 17:18:33 +08:00
主要逻辑位于TsIdolActor中文件路径为`Script/LiveDirector/Character/TsIdolActor.ts`
2024-05-24 18:21:55 +08:00
# AVCharacter
主要实现了`virtual void OnRep_AttachmentReplication() override;`声明了若干BlueprintNativeEvent
- bool CanSyncRelativeTransform();
- void BeforeAttachToNewParent();
- void AfterAttachToNewParent();
## OnRep_AttachmentReplication()
2024-05-27 12:00:54 +08:00
同步Attachment行为。主要是针对 不同角色执行不同的Attachment行为。
2024-05-24 18:21:55 +08:00
注释:
>// 动捕模式下CanSync=false. 各端自行计算Actor Location, client无需使用Server计算结果
// 自由行走模式下, CanSync=trueclient需要同步server的transform信息
2024-05-16 17:18:33 +08:00
2024-05-27 12:00:54 +08:00
2024-05-24 18:21:55 +08:00
# TsIdolActor.ts
## VirtualOverrider
```typescript
CanSyncRelativeTransform(): boolean {
if (Utils.HasTag(this.PropTags, new UE.GameplayTag("Idol.AIACao"))) {
return false;
}
if(this.MovementComp && this.MovementComp.ManulMovement){
return false
}
var animInstance = this.Mesh.GetAnimInstance() as UE.IdolAnimInstance
let fullbodyNode = Reflect.get(animInstance, 'AnimGraphNode_Fullbody') as UE.AnimNode_FullBody
return !(fullbodyNode && fullbodyNode.bGetMotionData)
}
```