当前位置: 首页 > news >正文

做网站如何自动采集图片百度推广培训机构

做网站如何自动采集图片,百度推广培训机构,建设平台类网站需要多少钱,做电子手抄报的网站前面,我们实现了近战攻击技能,敌人通过AI靠近玩家,并且通过AI还能够触发近战攻击的释放。现在我们思考一个问题,如果敌人没有武器,攻击的手段是用的双手,我们该如何去获取它的攻击范围。 现在实现的一套是获…

前面,我们实现了近战攻击技能,敌人通过AI靠近玩家,并且通过AI还能够触发近战攻击的释放。现在我们思考一个问题,如果敌人没有武器,攻击的手段是用的双手,我们该如何去获取它的攻击范围。
现在实现的一套是获取武器的攻击范围,我们还没有实现在没有武器的情况下,还需要区分左右手,这样该如何去实现。
我们准备增加对应的标签,然后新增一个结构体,用于动画和蒙太奇的映射,最好能把需要获取的骨骼位置也写入到其中,这样如果角色有多个近战攻击动画,我们可以随机一个使用,然后从内部获取所需的数据,进行后续范围判断。
逻辑是这样的,开干。

兼容更多的攻击方式

现在我们只支持使用武器攻击,我们需要再增加比如左右手的攻击,后续甚至有可能增加嘴的攻击,比如龙喷火。
首先,我们在标签文件RPGGameplayTags.h中增加一些标签,使用标签去区分不同的攻击方式。

FGameplayTag Montage_Attack_Weapon; //使用武器攻击蒙太奇标签FGameplayTag Montage_Attack_RightHand; //右手攻击蒙太奇标签FGameplayTag Montage_Attack_LeftHand; //左手攻击蒙太奇标签

接着在cpp文件中,将标签注册到标签管理器中

	/** Montage*/GameplayTags.Montage_Attack_Weapon = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Montage.Attack.Weapon"),FString("使用武器攻击蒙太奇标签"));GameplayTags.Montage_Attack_LeftHand = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Montage.Attack.LeftHand"),FString("左手攻击蒙太奇标签"));GameplayTags.Montage_Attack_RightHand = UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Montage.Attack.RightHand"),FString("右手攻击蒙太奇标签"));

然后编译打开标签管理器,查看标签有没有被正确注册
在这里插入图片描述
有了标签,我们需要一个可以设置和标签对应蒙太奇动画的结构体,这样,敌人的普通攻击可以设置多个,在技能里面可以兼容多种攻击方式,我们没必须为每一种攻击方式创建一个攻击技能。
在CombatInterface.h文件中,我们新增一个结构体,用于存储对应的蒙太奇,标签和骨骼插槽。蒙太奇是攻击使用的动画,标签是在动画播放时触发的标签,这样可以在接收到标签的事件通知时,触发攻击范围检测,而骨骼插槽的设置,是为了设置攻击的范围的位置,

//蒙太奇动画和标签以及骨骼位置的映射,用于攻击技能获取和设置攻击范围
USTRUCT(BlueprintType)
struct FTaggedMontage
{GENERATED_BODY()//使用的蒙太奇UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)UAnimMontage* Montage = nullptr;//对应的标签UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)FGameplayTag MontageTag;//攻击时的触发伤害的骨骼插槽UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)FName CombatTipSocketName; //设置技能释放的位置
};

有了结构体以后,我们需要设置它,在RPGCharacter.h中,我们在角色基类身上设置结构体数组,这样我们可以设置多个基础攻击动画。

	UPROPERTY(EditAnywhere, Category="Combat")TArray<FTaggedMontage> AttackMontage;

有了属性配置,我们需要一个函数去获取,所以接着在CombatInterface.h文件的战斗接口中添加一个函数用于获取。

	UFUNCTION(BlueprintNativeEvent, BlueprintCallable)TArray<FTaggedMontage> GetAttackMontages();

接着我们在角色基类里面实现它

virtual TArray<FTaggedMontage> GetAttackMontages_Implementation() override;

实现也很简单,直接返回即可

TArray<FTaggedMontage> ARPGCharacter::GetAttackMontages_Implementation()
{return AttackMontage;
}

我们还需要一个获取骨骼插槽位置的函数,这个函数可以通过结构体去判断获取武器上的插槽还是角色模型身上的武器插槽。
所以我们在RPGCharacter.h中,接着创建一个虚函数,用于通过数据获取位置

	UFUNCTION(BlueprintNativeEvent, BlueprintCallable)FVector GetCombatSocketLocationByStruct(const FTaggedMontage TaggedMontage) const;

在角色基类中覆写

virtual FVector GetCombatSocketLocationByStruct_Implementation(const FTaggedMontage TaggedMontage) const override;

在实现这里,我们通过结构体判断当前是否使用武器攻击,如果使用武器攻击,则从武器上面获取插槽位置,反之,则从角色模型身上获取插槽位置。

FVector ARPGCharacter::GetCombatSocketLocationByStruct_Implementation(const FTaggedMontage TaggedMontage) const
{if(TaggedMontage.MontageTag.MatchesTagExact(FRPGGameplayTags::Get().Montage_Attack_Weapon)){return Weapon->GetSocketLocation(TaggedMontage.CombatTipSocketName);}else{return GetMesh()->GetSocketLocation(TaggedMontage.CombatTipSocketName);}
}

修改蓝图适配新的逻辑

上面,我们修改相关逻辑,编译后打开UE,我们也需要将蓝图修改以后,适配新的逻辑。
首先打开普通攻击技能蓝图,在设置完朝向后,从创建的数组中获取一条结构体使用,为了方便后面使用,我们将其保存为变量,如果直接链接到后面,随机的逻辑将会重新随机,所以我们保存为变量,并通过变量结构体获取需要使用的蒙太奇。
在这里插入图片描述
接着修改播放完成蒙太奇后的逻辑,事件修改为结构体内的标签,获取位置方法,改为通过结构体获取
在这里插入图片描述
如果蒙太奇被打断了,技能会无法结束,所以,我们还需要设置在动画完成或中断时,结束技能
在这里插入图片描述

打开战士的蓝图,配置结构体数据
在这里插入图片描述
最重要的一步,就是要修改蒙太奇里面的通知,这样才可以触发事件
在这里插入图片描述
修改完成以后查看效果是否正常。

http://www.dt0577.cn/news/52554.html

相关文章:

  • WordPress使用sentcloud网站优化seo培训
  • 最好的网站模版超八成搜索网站存在信息泄露问题
  • 做网站必须知道的问题产品推广ppt
  • 做英语在线翻译兼职网站个人如何做seo推广
  • 软件开发与网站开发青海seo技术培训
  • 用javaee做的网站模板关键词快速排名平台
  • 做网站平台多少钱微商引流推广
  • 泉州专业网站制作定制黄冈免费网站推广平台汇总
  • 桥头镇做网站2023b站免费推广入口游戏
  • 成都网站开发建设公司软文广告发布平台
  • 做游戏模型挣钱的网站十大免费货源网站免费版本
  • 南昌做微信网站竞价推广出价多少合适
  • 个人备案网站盈利珠海百度搜索排名优化
  • 网站建设 江苏seo推广营销靠谱
  • 网站页头设计seo推广排名平台有哪些
  • 什么网站做旅行计划人民日报最新新闻
  • wordpress长文章分页插件seo工具大全
  • 做个人网站要多少钱软文推广案例
  • 泰安网站建设流程海外营销公司
  • 常德房地产信息网网站seo系统
  • 政府网站开发成本网站有吗免费的
  • 做网站的空间是什么最近新闻事件
  • 深圳宝安专业做网站公司互联网营销师国家职业技能标准
  • vuejs 做网站 性能成都优化网站哪家公司好
  • 布吉商城网站建设哪家公司靠谱公司网页
  • 成立网站开发公司线上营销模式
  • 国内有wix做的好的网站长沙seo优化哪家好
  • 上海网站设计案例seo关键词优化推广
  • 安庆专业做淘宝网站彩虹云商城网站搭建
  • 嵊州哪里可以做网站网络媒体推广产品