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

迪哥哪个网站上做游戏直播苏州企业做网站

迪哥哪个网站上做游戏直播,苏州企业做网站,网站如何转移到新的空间服务器上,唐山专业做网站公司前面#xff0c;我们实现了近战攻击技能#xff0c;敌人通过AI靠近玩家#xff0c;并且通过AI还能够触发近战攻击的释放。现在我们思考一个问题#xff0c;如果敌人没有武器#xff0c;攻击的手段是用的双手#xff0c;我们该如何去获取它的攻击范围。 现在实现的一套是获…前面我们实现了近战攻击技能敌人通过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, CategoryCombat)TArrayFTaggedMontage AttackMontage;有了属性配置我们需要一个函数去获取所以接着在CombatInterface.h文件的战斗接口中添加一个函数用于获取。 UFUNCTION(BlueprintNativeEvent, BlueprintCallable)TArrayFTaggedMontage GetAttackMontages();接着我们在角色基类里面实现它 virtual TArrayFTaggedMontage GetAttackMontages_Implementation() override;实现也很简单直接返回即可 TArrayFTaggedMontage 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.dnsts.com.cn/news/213988.html

相关文章:

  • 学校网站模板 中文版乐山网站营销推广哪家公司好
  • 网站建设与维护书网站建设工单系统护语
  • 关于农产品电子商务网站的建设建设网站前的需求分析
  • 做企业平台的网站毕设做网站怎么样
  • 中淼建设工程有限公司网站vs网站开发
  • 网站应用网站开发淄博手机网站建设公司
  • 淘宝客的网站是如何建设的wordpress 搜索自定义字段
  • 中山 网站定制全球设计网站
  • 上海网站seo排名wordpress文章采集助手
  • 提供图片做网站的要求域名注册商有哪些
  • 做一人网站要多少钱做网站备案地点
  • 合肥高新城建设计院网站高端访问
  • 网站开发价格对比门户网站建设和管理情况
  • 安徽网站关键词优化排名通河新村街道网站建设
  • 做网站定金一般多少ecms dedecms phpcms wordpress
  • 重庆企业网站制作做旅游的网站 是什么风格
  • 网站app建设图片素材百度官方网站首页
  • 长沙软件搭建公司北京首都功能优化
  • pyton怎么做网站的代码中国装修公司十大排名
  • 建设网站费用主要包括哪些网站开通支付宝支付
  • 品牌网站建设要多少钱视频制作网站都有哪些
  • 电子商务静态网站建设实验报告手机端网站怎么制作
  • 交互式网站定义余姚做网站公司
  • 外贸网站源代码做网站导航栏素材图
  • 查询网站最新域名营销案例100例小故事及感悟
  • 仿团购网站模板渭南市建网站
  • 天津最好的网站建设建设智能网站
  • php网站开发工程师月薪网站怎么优化推荐
  • 汕头企业免费建站服装市场网站建设
  • 专门做儿童的店铺网站文明网站建设总结