|
UMG指Unreal Motion Graphics,是UE中的可视化UI创作工具。在本节中,我们将通过创建角色血量条UI来学习UMG的初步使用。
1. 创建血量属性
血量是角色的一种属性,要记录角色的血量数据,一种本能的做法是在SurCharacter中定义一个Health变量。但这种方式的弊端显而易见:随着项目的扩展、游戏不断更新迭代新版本,角色的属性可能达到几十上百,若是加上角色的技能、特性、天赋或其他各种角色相关内容,SurCharacter类的内容将膨胀到极难维护。
在UE中解决这个问题的办法也很简单,在之前第7节开宝箱的文章中已经介绍过,可以使用UE中的ActorComponent类,让整个类以组件的形式被SurCharacter拥有。因此,我们从ActorComponent创建角色的SurAttributeComponent类,用于实现角色的各种属性。
随后,我们创建protected的浮点型Health,并提供public的set方法。如果有朋友对这种设计方法不理解,可以自行了解学习设计模式的相关知识,其中一个基础的原则就是尽量减少底层代码的暴露,即不要为了一时方便滥用public来修饰变量。SurAttributeComponent.h和SurAttributeComponent.cpp的代码如下所示,有关UFUNCTION和UPROPERTY的使用可以参考第0节简介中的速查链接:
SurAttributeComponent.h
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "SurAttributeComponent.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class SURKEAUE_API USurAttributeComponent : public UActorComponent
{
GENERATED_BODY()
protected:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Attributes")
float Health;
public:
USurAttributeComponent();
UFUNCTION(BlueprintCallable, Category="Attributes")
bool ApplyHealthChange(float Delta);
};
SurAttributeComponent.cpp
#include "SurAttributeComponent.h"
USurAttributeComponent::USurAttributeComponent()
{
Health = 100;
}
bool USurAttributeComponent::ApplyHealthChange(float Delta)
{
Health += Delta;
// 用于判断操作是否成功完成,如角色死亡、特殊机制等情况可能失败
// 目前先返回true
return true;
}
然后使用如下方法在SurCharacter中声明组件,并在.cpp中创建相应实例:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
USurAttributeComponent* AttributeComp;
<hr/>2. 应用血量更改
为了测试血量组件能否正常运行,我们可以给魔法粒子附加伤害计算,并利用蓝图快速创建一个向玩家发射魔法粒子的敌人。
首先,在SurMagicProjectile中为球体组件绑定一个OnComponentBeginOverlap事件,旨在当魔法粒子与物体重叠时触发。比起使用阻挡来触发,使用重叠可以通过判定重叠对象来更方便的忽略友军伤害,并且让魔法粒子直接穿过友军继续在场景中计算。
在之前炸药桶的内容中已经介绍过事件绑定,这里再介绍一个小技巧:在为创建绑定事件的函数时,我们可以在VS中利用右键“转到定义”去找到该事件默认的输入,找到参数数量最多的一个函数重载,然后复制粘贴除第一个参数(UE函数的签名)外的其他参数,去掉逗号作为绑定函数的参数。
图13-1 转到定义
然后在函数中实现减少血量的代码,在SurMagicProjectile.h和SurMagicProjectile.cpp文件中添加的代码分别为(到目前为止应该知道哪些代码应该在哪个地方了,所以为了节省空间没有贴全,该部分完整代码在文末):
//SurMagicProjectile.h
UFUNCTION()
void OnActorOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
//SurMagicProjectile.cpp
SphereComp->OnComponentBeginOverlap.AddDynamic(this, &ASurMagicProjectile::OnActorOverlap);
void ASurMagicProjectile::OnActorOverlap(...)
{
if (OtherActor) {
//获得AttributeComp
USurAttributeComponent* AttributeComp = Cast<USurAttributeComponent>(OtherActor->GetComponentByClass(USurAttributeComponent::StaticClass()));
// 再次判空,可能碰到的是墙壁、箱子等没有血量的物体
if (AttributeComp) {
// 魔法粒子造成20血量伤害
AttributeComp->ApplyHealthChange(-20.0f);
// 一旦造成伤害就销毁,避免穿过角色继续计算
Destroy();
}
}
}
由于我们希望子弹可以忽略友军,设置了重叠时开始事件,因此对应的Projectile碰撞设置也要进行更改:
图13-2 碰撞设置
在Player中利用蓝图实现在屏幕上打印血量的字符串,以让我们实时了解角色的血量。这个蓝图实现很简单,唯一注意的是设置显示时长为0并关闭Print to Log,这样屏幕上只会出现一个数字(事件Tick会在每一帧都调用),且不会在Log中输出大量无用信息:
图13-3 蓝图设置
随后利用蓝图系统快速实现一个攻击玩家的敌人,该部分在视频课程中的P16第15分钟和P21的第2分钟。
从Actor派生一个名为ProjectileCanon的蓝图类,为其添加Utility下的箭头组件并设置为根,并设置颜色(UE中用红绿蓝表示XYZ轴,箭头默认的红色与X轴相同容易混乱),去掉“渲染”属性中的“游戏中隐藏”。
图13-4 添加箭头组件
然后,在事件图表中从“开始运行”节点添加循环计时器,并添加名为OnTimerElapsed的自定义事件,设置该事件为朝箭头方向发射魔法粒子;同时,在Tick节点后实现在每一帧将箭头指向玩家,方向向量由两个Actor的坐标相减得到(不理解的朋友可学习一下数学的立体几何内容)。如图13-4和13-5所示,完整的蓝图代码见文末:
图13-5 重复发射魔法粒子
图13-6 更新箭头位置
最后需要注意,上一节Debug时把Player的Attack属性的ProjectileClass设置为空,需要把它还原为MagicProjectile。运行关卡,随着箭头每2秒对玩家进行攻击,左上角显示玩家的血量也逐次减少:
图13-7 运行测试
<hr/> 3. 血量UI
现在才正式进入UMG的使用,我们将通过UMG制作角色的血量条来实时显示角色的血量。
首先在Content文件夹下创建UI文件夹,用于存放所有UI相关的资产。在UI文件夹中创建“用户界面” -> “控件蓝图”,命名为PlayerHealth_Widget。双击打开控件,就可以看到UMG的操作界面,关于其完整的教程可以参考官方文档。
在左侧“控制板”中的“通用”分别添加一个进度条和文本,在“层级”中选择任意组件,右键添加水平框,并将另外一个拖入其中,这样不需要手动调整就可以使这两个元素在水平保持对齐。
图13-8 添加水平框
然后在进度条右侧的“细节”面板中找到“插槽”,选择“尺寸”为填充,拉动水平框的整体长度就可以控制血条的长度。将水平框的“锚点”选择为左上角,位置XY值凭喜好设置,这将决定UI在屏幕显示的位置,完成后就做好了简单的血条UI。
在Player的蓝图中选择“事件开始运行”,并添加Create Widget节点,选择PlayerHealth_Widget,然后将其添加到视口,如图13-9所示。这样,在我们运行关卡时UI就会显示在屏幕上:
图13-9 显示UI
图13-10 运行测试
但此时UI的内容还是固定的,UI需要和数据进行绑定后,才能实时根据数据进行显示。选择文本块,点击 “内容” -> 文本-> 绑定 -> 创建绑定,UE会在蓝图中创建相应函数,我们将其重命名为GetHealthText。添加“获取拥有玩家Pawn(Get Owning Player Pawn)” -> 按类获取组件(Get Component By Class)-> 选择class为SurAttributeComponet -> GetHealth -> 连接到“返回节点”的return value引脚;然后在“获取拥有玩家Pawn”后添加Is Valid判空,如图13-11所示。编译保存运行,可以看到数字能够实时显示血量了。
图13-11 血量文本绑定
图13-12 运行测试
为了控制篇幅,关于血量条UI的其他内容将在下节继续。另外,有关FString、FText、FName等字符串的相关问题,可以见第0节简介的速查链接。
<hr/>4. 完整代码
SurMagicProjectile.h
#pragma once
#include &#34;CoreMinimal.h&#34;
#include &#34;GameFramework/Actor.h&#34;
#include &#34;SurMagicProjectile.generated.h&#34;
class USphereComponent;
class UProjectileMovementComponent;
class UParticleSystemComponent;
UCLASS()
class SURKEAUE_API ASurMagicProjectile : public AActor
{
GENERATED_BODY()
public:
ASurMagicProjectile();
protected:
// 球体,用于计算碰撞
UPROPERTY(VisibleAnywhere)
USphereComponent* SphereComp;
// 投射体,控制球体的运动
UPROPERTY(VisibleAnywhere)
UProjectileMovementComponent* MovementComp;
// 粒子系统,控制特效
UPROPERTY(VisibleAnywhere)
UParticleSystemComponent* EffectComp;
UFUNCTION()
void OnActorOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
};
SurMagicProjectile.cpp
#include &#34;SurMagicProjectile.h&#34;
#include &#34;Components/SphereComponent.h&#34;
#include &#34;GameFramework/ProjectileMovementComponent.h&#34;
#include &#34;Particles/ParticleSystemComponent.h&#34;
#include &#34;SurAttributeComponent.h&#34;
ASurMagicProjectile::ASurMagicProjectile()
{
PrimaryActorTick.bCanEverTick = true;
SphereComp = CreateDefaultSubobject<USphereComponent>(&#34;SphereComp&#34;);
SphereComp->SetCollisionProfileName(&#34;Projectile&#34;);
SphereComp->OnComponentBeginOverlap.AddDynamic(this, &ASurMagicProjectile::OnActorOverlap);
RootComponent = SphereComp;
MovementComp = CreateDefaultSubobject<UProjectileMovementComponent>(&#34;MovementComp&#34;);
MovementComp->InitialSpeed = 1000.0f;
MovementComp->bRotationFollowsVelocity = true;
MovementComp->bInitialVelocityInLocalSpace = true;
EffectComp = CreateDefaultSubobject<UParticleSystemComponent>(&#34;EffectComp&#34;);
EffectComp->SetupAttachment(SphereComp);
}
void ASurMagicProjectile::OnActorOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
if (OtherActor) {
//获得AttributeComp
USurAttributeComponent* AttributeComp = Cast<USurAttributeComponent>(OtherActor->GetComponentByClass(USurAttributeComponent::StaticClass()));
// 再次判空,可能碰到的是墙壁、箱子等没有血量的物体
if (AttributeComp) {
// 魔法粒子造成20血量伤害
AttributeComp->ApplyHealthChange(-20.0f);
// 一旦造成伤害就销毁,避免穿过角色继续计算
Destroy();
}
}
}
void ASurMagicProjectile::BeginPlay()
{
Super::BeginPlay();
}
void ASurMagicProjectile::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
ProjectileCanon蓝图
Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name=&#34;K2Node_Event_0&#34;
EventReference=(MemberParent=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,MemberName=&#34;ReceiveBeginPlay&#34;)
bOverrideFunction=True
NodePosX=32
bCommentBubblePinned=True
NodeGuid=74DA3C714679F20D8FC28682D27DBDBC
CustomProperties Pin (PinId=E978C1594A9C7BCF2384C1A36AE52DDB,PinName=&#34;OutputDelegate&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;delegate&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,MemberName=&#34;ReceiveBeginPlay&#34;),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C291F2704186CF935B0124B0C63D1937,PinName=&#34;then&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_0 32B8DFAE4C2EE12E042B0EAC14273263,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_0&#34;
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.KismetSystemLibrary&#34;&#39;,MemberName=&#34;K2_SetTimerDelegate&#34;)
NodePosX=224
AdvancedPinDisplay=Hidden
ErrorType=1
ErrorMsg=&#34;“ Event ”引脚当前的值无效:Unsupported type 委托 on pin Delegate&#34;
NodeGuid=4C4383CA497DCE540A303680A497CA19
CustomProperties Pin (PinId=32B8DFAE4C2EE12E042B0EAC14273263,PinName=&#34;execute&#34;,PinToolTip=&#34;\n执行&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_Event_0 C291F2704186CF935B0124B0C63D1937,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=8D93EEB348E90C453B22658FD1DEA1A6,PinName=&#34;then&#34;,PinToolTip=&#34;\n执行&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=7A4635B247988E5EAA2E6A96B3EDB7F2,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nKismet系统库 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.KismetSystemLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Script/Engine.Default__KismetSystemLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=4341BACC4BE69CF5FAB290A418B0D11D,PinName=&#34;Delegate&#34;,PinFriendlyName=NSLOCTEXT(&#34;&#34;, &#34;9A53998A4C6E396FD5A2F992C7E1EB00&#34;, &#34;Event&#34;),PinToolTip=&#34;Event\n委托&#34;,PinType.PinCategory=&#34;delegate&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Package&#39;&#34;/Script/Engine&#34;&#39;,MemberName=&#34;TimerDynamicDelegate__DelegateSignature&#34;),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CustomEvent_0 BE3CEF3F44109D5A34B52B9527AD9BCC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E24630494004AA2CE45C52B2AA22EC74,PinName=&#34;Time&#34;,PinToolTip=&#34;Time\n浮点\n\n执行委托前等待的时间(秒)。如已设置定时器,将其设为小于等于0秒后其将被清除。&#34;,PinType.PinCategory=&#34;float&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;2.000000&#34;,AutogeneratedDefaultValue=&#34;0.0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=AD89BBD947E091AAC2E9DE98081E2EDC,PinName=&#34;bLooping&#34;,PinToolTip=&#34;Looping\n布尔\n\n如为true,则在Time的每秒执行委托,为false则只执行一次委托。&#34;,PinType.PinCategory=&#34;bool&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;true&#34;,AutogeneratedDefaultValue=&#34;false&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=B521E4BF4E9A23E0727A5EB5AA18ECF1,PinName=&#34;InitialStartDelay&#34;,PinToolTip=&#34;Initial Start Delay\n浮点\n\n传递到定时管理器的初始延迟(以秒计)&#34;,PinType.PinCategory=&#34;float&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0.000000&#34;,AutogeneratedDefaultValue=&#34;0.000000&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=A47857E548FF270850952DB1469E8638,PinName=&#34;InitialStartDelayVariance&#34;,PinToolTip=&#34;Initial Start Delay Variance\n浮点\n\n使用此参数可在定时开始时添加部分方差,而不用对InitialStartDelay输入设置随机范围(以秒计)。&#34;,PinType.PinCategory=&#34;float&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0.000000&#34;,AutogeneratedDefaultValue=&#34;0.000000&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=3F27795641BEA0F39234A0BC24BD7381,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n定时器柄 结构\n\n返回传至其他定时器函数来操纵此定时器的定时器柄。&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/Engine.TimerHandle&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CustomEvent Name=&#34;K2Node_CustomEvent_0&#34;
CustomFunctionName=&#34;OnTimerElapsed&#34;
NodePosX=-48
NodePosY=176
NodeGuid=F5FB3DC94C97B8235F1F05A2B80260EE
CustomProperties Pin (PinId=BE3CEF3F44109D5A34B52B9527AD9BCC,PinName=&#34;OutputDelegate&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;delegate&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=BlueprintGeneratedClass&#39;&#34;/Game/ProjectileCanon.ProjectileCanon_C&#34;&#39;,MemberName=&#34;OnTimerElapsed&#34;,MemberGuid=F5FB3DC94C97B8235F1F05A2B80260EE),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_0 4341BACC4BE69CF5FAB290A418B0D11D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=47EFD98F4226065842AF65B671910986,PinName=&#34;then&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_SpawnActorFromClass_0 1C6EE6124D921D965F0C38B24F41A876,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_SpawnActorFromClass Name=&#34;K2Node_SpawnActorFromClass_0&#34;
NodePosX=224
NodePosY=192
AdvancedPinDisplay=Hidden
NodeGuid=EAA9E571473604AFADDDA5BDEA213381
CustomProperties Pin (PinId=1C6EE6124D921D965F0C38B24F41A876,PinName=&#34;execute&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CustomEvent_0 47EFD98F4226065842AF65B671910986,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6C6A811C4D2663ACFD49CF8F8DB2E2AE,PinName=&#34;then&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=BC9616434894AA6383D9A7BF0AA77950,PinName=&#34;Class&#34;,PinToolTip=&#34;Actor 类引用 Class\n需要构建的对象类&#34;,PinType.PinCategory=&#34;Class&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Game/MagicProjectile.MagicProjectile_C&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6A5F9D7047E6C18276874F968894F813,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Magic Projectile 对象引用 Return Value\n已构建对象&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=BlueprintGeneratedClass&#39;&#34;/Game/MagicProjectile.MagicProjectile_C&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=5E7583B14BFB691E30C055854D0FD844,PinName=&#34;SpawnTransform&#34;,PinToolTip=&#34;Spawn Transform\n变换\n\n生成Actor所用的变换&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Transform&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_2 680725864941AAB984208AA2C45EE069,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=69F4FDA049C04CF58B3A91B0C91FFA06,PinName=&#34;CollisionHandlingOverride&#34;,PinToolTip=&#34;Collision Handling Override\nESpawnActorCollisionHandlingMethod枚举值\n\n说明如何处理生成点处的碰撞。如未定义,则使用actor类设置。&#34;,PinType.PinCategory=&#34;byte&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Enum&#39;&#34;/Script/Engine.ESpawnActorCollisionHandlingMethod&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;AlwaysSpawn&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=025ACC8B4DCE18B4B559BCA5B717152B,PinName=&#34;Owner&#34;,PinToolTip=&#34;Owner\nActor 对象引用\n\n可以保留为空;主要用于复制(bNetUseOwnerRelevancy 和 bOnlyRelevantToOwner),或可视性(PrimitiveComponent的bOwnerNoSee/bOnlyOwnerSee)&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=ED8C831A4C6630071F597A99D1F38DC5,PinName=&#34;Instigator&#34;,PinToolTip=&#34;Instigator\nPawn 对象引用\n\n负责处理此actor所产生伤害及其他gameplay事件的Pawn。&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Pawn&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,AutogeneratedDefaultValue=&#34;None&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_2&#34;
bIsPureFunc=True
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,MemberName=&#34;MakeTransform&#34;)
NodePosX=-128
NodePosY=288
NodeGuid=F4291C5F47679358FBA3F09407F67F34
CustomProperties Pin (PinId=43120294444B4CF67D2147AF17254098,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nKismet数学库 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Script/Engine.Default__KismetMathLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6165EB1745EEB9AB3DFDAA904F23CED1,PinName=&#34;Location&#34;,PinToolTip=&#34;Location\n向量&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_3 161DED1445D0F7C04AE4D48D4EDF6696,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=48297639410647D1364F6C8677F4E0D7,PinName=&#34;Rotation&#34;,PinToolTip=&#34;Rotation\n旋转体&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_4 3F0D54554836FA82B993EE89FA40A40C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C4CD55344D17FC382408F4A587DAF6C4,PinName=&#34;Scale&#34;,PinToolTip=&#34;Scale\n向量&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;1,1,1&#34;,AutogeneratedDefaultValue=&#34;1,1,1&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=680725864941AAB984208AA2C45EE069,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n变换\n\n在位置、旋转与缩放中创建变换&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Transform&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_SpawnActorFromClass_0 5E7583B14BFB691E30C055854D0FD844,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_3&#34;
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberName=&#34;K2_GetActorLocation&#34;,bSelfContext=True)
NodePosX=-432
NodePosY=272
NodeGuid=A8FC9B84423A96DC553E049729817670
CustomProperties Pin (PinId=D7D36F7B45A0C4794EEA9592917889B5,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nActor 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=161DED1445D0F7C04AE4D48D4EDF6696,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n向量\n\n返回此Actor的RootComponent的位置&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_2 6165EB1745EEB9AB3DFDAA904F23CED1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_4&#34;
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberName=&#34;K2_GetActorRotation&#34;,bSelfContext=True)
NodePosX=-432
NodePosY=368
NodeGuid=298DEA894F5FB945E2C763A8772A9C09
CustomProperties Pin (PinId=781490FD43FFDC37A62758809C5F58D7,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nActor 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=3F0D54554836FA82B993EE89FA40A40C,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n旋转体\n\n返回此Actor的RootComponent的旋转。&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_2 48297639410647D1364F6C8677F4E0D7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name=&#34;K2Node_Event_3&#34;
EventReference=(MemberParent=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,MemberName=&#34;ReceiveTick&#34;)
bOverrideFunction=True
NodePosX=32
NodePosY=688
NodeGuid=C86AC91C4DA20B92393EEA8D85EDC162
CustomProperties Pin (PinId=71811C894B9618294384A88DD4CA69B6,PinName=&#34;OutputDelegate&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;delegate&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,MemberName=&#34;ReceiveTick&#34;),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=65F7C1FA4CB5EFD875DEF7B50EF52EF7,PinName=&#34;then&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_5 D124172E4C7A2A0AF13D3396A3AB17F8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=FC78E2094887552E530095868A952D7E,PinName=&#34;DeltaSeconds&#34;,PinToolTip=&#34;Delta Seconds\n浮点&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;float&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0.0&#34;,AutogeneratedDefaultValue=&#34;0.0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_VariableGet Name=&#34;K2Node_VariableGet_0&#34;
VariableReference=(MemberName=&#34;Arrow&#34;,bSelfContext=True)
NodePosX=208
NodePosY=752
NodeGuid=EA36431845DA3FA2BC7A6698E7C9D28E
CustomProperties Pin (PinId=336B877B43D1B8F522D7D180461AF293,PinName=&#34;Arrow&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.ArrowComponent&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_5 05502C044550FEA9A52FD78C717897AD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=28D2915541C98561FEA1859FC5B9E6F9,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=BlueprintGeneratedClass&#39;&#34;/Game/ProjectileCanon.ProjectileCanon_C&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_5&#34;
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.SceneComponent&#34;&#39;,MemberName=&#34;K2_SetWorldRotation&#34;)
NodePosX=384
NodePosY=672
AdvancedPinDisplay=Hidden
NodeGuid=DB6AC0AE42C68007FD7FEFBBFEDD83E4
CustomProperties Pin (PinId=D124172E4C7A2A0AF13D3396A3AB17F8,PinName=&#34;execute&#34;,PinToolTip=&#34;\n执行&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_Event_3 65F7C1FA4CB5EFD875DEF7B50EF52EF7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0D58A91B4D558A3F7FFCE881AA29229C,PinName=&#34;then&#34;,PinToolTip=&#34;\n执行&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=05502C044550FEA9A52FD78C717897AD,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\n场景组件 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.SceneComponent&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_VariableGet_0 336B877B43D1B8F522D7D180461AF293,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=7EDF6BF04D9ABE67365BBEAAE49B05BD,PinName=&#34;NewRotation&#34;,PinToolTip=&#34;New Rotation\n旋转体\n\n组件在场景空间中的新旋转。 *&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_1 0DD06E024723D8BF7B5F4E9249E4747E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=1CF9EDC84337E057CEE80EBAE2A091A2,PinName=&#34;bSweep&#34;,PinToolTip=&#34;Sweep\n布尔\n\n是否扫描到目标位置(当前不支持旋转)。 *&#34;,PinType.PinCategory=&#34;bool&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;false&#34;,AutogeneratedDefaultValue=&#34;false&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=9252AAB543647E6C10E157A1989F150C,PinName=&#34;SweepHitResult&#34;,PinToolTip=&#34;Sweep Hit Result\n命中结果 结构\n\n如扫描为true,则此项为来自所有影响的命中结果。 *&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/Engine.HitResult&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
CustomProperties Pin (PinId=4777A9414B874401760B0894C70EE39F,PinName=&#34;bTeleport&#34;,PinToolTip=&#34;Teleport\n布尔\n\n是否传送物理状态(如果此对象启用了物理碰撞)。 如为true,此对象的物理速度未发生改变(因此布偶部件不受位置改变所影响)。 如为false,物理速度将将基于位置变化更新(将影响布偶部件)。 如CCD开启且未传送,则整个扫描范围中的对象都将受影响。&#34;,PinType.PinCategory=&#34;bool&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;false&#34;,AutogeneratedDefaultValue=&#34;false&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_6&#34;
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberName=&#34;K2_GetActorLocation&#34;,bSelfContext=True)
NodePosX=-192
NodePosY=880
NodeGuid=C2A106AB4FDD2F6CA0D3EE9EA2FA0471
CustomProperties Pin (PinId=E354E6A645698CC9B4D0F2AF324A05C1,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nActor 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=6E79093F4327DC95E5E135A958600CDA,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n向量\n\n返回此Actor的RootComponent的位置&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_9 C5FFEB954CCBD02DEA01029AAD7D752E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_7&#34;
bIsPureFunc=True
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.GameplayStatics&#34;&#39;,MemberName=&#34;GetPlayerPawn&#34;)
NodePosX=-416
NodePosY=800
NodeGuid=E301A1A14B3F066B54AAEC9E253900E7
CustomProperties Pin (PinId=6557CB6C4AF8282641E7AEBAB0E84057,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nGameplay静态 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.GameplayStatics&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Script/Engine.Default__GameplayStatics&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=D095023444A7A29DD8A74187CB9F9582,PinName=&#34;WorldContextObject&#34;,PinToolTip=&#34;World Context Object\n{类别}&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/CoreUObject.Object&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=BCC7E2B14D174585C29EBDBD0FD1AFCD,PinName=&#34;PlayerIndex&#34;,PinToolTip=&#34;Player Index\n整数&#34;,PinType.PinCategory=&#34;int&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0&#34;,AutogeneratedDefaultValue=&#34;0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C28D97BF4162E976E369CFB8601136E8,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\nPawn 对象引用\n\n返回指定玩家索引处的玩家pawn&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Pawn&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_8 FB9EE1684E2F1AA32D35EC9CA5A71DAB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_8&#34;
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberName=&#34;K2_GetActorLocation&#34;,bSelfContext=True)
NodePosX=-160
NodePosY=800
NodeGuid=53737BC6423092B7ABD94CBD302BEA2D
CustomProperties Pin (PinId=FB9EE1684E2F1AA32D35EC9CA5A71DAB,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nActor 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.Actor&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_7 C28D97BF4162E976E369CFB8601136E8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=53FADC7345084CBE85A1D89F3E8375DB,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n向量\n\n返回此Actor的RootComponent的位置&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_9 458D0A34479463D7FA785899F3A3BBAE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_9&#34;
bIsPureFunc=True
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,MemberName=&#34;Subtract_VectorVector&#34;)
NodePosX=48
NodePosY=816
NodeGuid=1861B2F948231C2BCF993593D7281156
CustomProperties Pin (PinId=2F59289041043E747C854FA5992BE86E,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nKismet数学库 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Script/Engine.Default__KismetMathLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=458D0A34479463D7FA785899F3A3BBAE,PinName=&#34;A&#34;,PinToolTip=&#34;A\n向量&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_8 53FADC7345084CBE85A1D89F3E8375DB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=C5FFEB954CCBD02DEA01029AAD7D752E,PinName=&#34;B&#34;,PinToolTip=&#34;B\n向量&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_6 6E79093F4327DC95E5E135A958600CDA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=935E4AA0414F635DFB391CB0FD3223A3,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n向量\n\n向量相减&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_1 260009F447824372448025B91D81D23C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&#34;K2Node_CallFunction_1&#34;
bIsPureFunc=True
FunctionReference=(MemberParent=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,MemberName=&#34;Conv_VectorToRotator&#34;)
NodePosX=176
NodePosY=816
NodeGuid=C1BA050E472F1C379BF5FA85F79B6E6B
CustomProperties Pin (PinId=B5B9DD254ADB7C061B8455BC482DA992,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;目标\nKismet数学库 对象引用&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=Class&#39;&#34;/Script/Engine.KismetMathLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultObject=&#34;/Script/Engine.Default__KismetMathLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=260009F447824372448025B91D81D23C,PinName=&#34;InVec&#34;,PinToolTip=&#34;In Vec\n向量&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_9 935E4AA0414F635DFB391CB0FD3223A3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0DD06E024723D8BF7B5F4E9249E4747E,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\n旋转体\n\n返回相应于矢量所指方向的FRotator朝向。\n将Yaw和Pitch设为正确的数值,并将Roll设为零,因其无法从矢量对其进行确定。\n\n@从矢量的方向返回FRotator,不带任何roll。&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,LinkedTo=(K2Node_CallFunction_5 7EDF6BF04D9ABE67365BBEAAE49B05BD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|