= 创作分享 =
技术讨论
解决Mcreator中geckolib实体攻击动画与攻击时间不匹配的 ...
C江秋

解决Mcreator中geckolib实体攻击动画与攻击时间不匹配的问题

C江秋 于 2024-2-8 21:59 ( 23天前 ) [教程] [复制链接] [显示全部楼层] [打印]
本帖最后由 C、江秋菌 于 2024-2-18 09:40 编辑

注:本教程基于Mcreator软件,当然,解决的思路也可以适用于其他自主使用IDE的MOD开发者,本教程含有轻量的需要一定编程经验才能理解的内容。
  在使用geckolib为自己创建实体攻击动画时,Mcreator初学者们往往会发现对于一些较长的攻击动画,往往会出现攻击动画还没有播放完,实体已经完成攻击造成了伤害,这是因为在实体攻击其他实体时,将会调用doHurtTarget方法,这个方法将会立即计算伤害,对此,我们选择一个取巧的办法来使得我们的实体能在播放攻击动画时正确地造成伤害。
  首先,默认你的Minecraft版本为1.20.1,API为Forge,并且已经在你的Mcreator中安装了以下插件:geckolib、attributes。同时,我也默认你已经完成了动画实体的初步创建,接下来,转到你的动画页面

1-1

1-1
将你的实体的攻击动画取消选中,接着保存。(在代码页面,它应该处于如下状态:

1-2

1-2
接下来创建一个流程,如:“(你的实体名字)Attack",之后就是轻松愉快的搭积木时间:

1-3

1-3
来讲解一下这里的思路吧:首先在我们的动画实体攻击时,我们先取消该事件,此时实体并不会产生攻击伤害,随后播放我们在Blockbench所定义的攻击动画,接下来,我们等待一段时间(根据你的想法,这里的时间也有所不同,例如我这里决定是播放到一半时造成伤害,具体的数值你可以根据自己的实体在游戏中的攻击方式以及表现来决定)。之后,我们来判断两个实体之间的距离以及攻击实体正面是否对着被攻击实体,使用简单的空间内直线距离计算[sqrt(x2-x1)2+(y2-y1)2+(z2-z1)2]即可完成对你实体的攻击距离的实现,这里的数值2可填你想要的攻击距离。之后在自定义代码中输入"!(entity instanceof LivingEntity && ((LivingEntity) entity).isUsingItem() && ((LivingEntity) entity).getUseItem().getItem().equals(Items.SHIELD))"这里的代码可能随着版本的更新而失效这里的自定义代码使得被攻击实体如果没拿着盾牌格挡时,我们后面的造成伤害的部分将会生效,而如果拿着盾牌,那么该伤害将不会生效,同时,将会模拟盾牌格挡伤害的效果。大体的思路讲解完了,如果你想更好的了解该方法,可以去查看我的项目源码,上不了github的可以用百度网盘链接:https://pan.baidu.com/s/1s_gICoj9-2z-GL9Rqz-1iA提取码:5418 ,代码和Mcreator流程模板都已经放入教程文件夹。
最后,如果你有更好的方式来解决该问题,也欢迎在帖子下讨论

点评

一件事只要坚持下去就有意义  发表于 2024-2-10 21:58

评分

参与人数 1RF +5 Vis +2 收起 理由
Zi_Min + 5 + 2 好活

查看全部评分

始终在征程上。
发表于 2024-2-8 21:59:04 | 显示全部楼层 |阅读模式

回复 | 举报

该帖共收到 7 条回复!
C江秋
本帖最后由 C、江秋菌 于 2024-2-18 20:58 编辑

更新了判断被攻击实体是否在攻击实体正面的部分
始终在征程上。
发表于 2024-2-8 22:29:32 | 显示全部楼层

回复 | 举报

lyxhaha
为什么你的Mcreator的字体那么清晰,而我的像狗屎一样
发表于 2024-2-10 20:03:53 | 显示全部楼层

回复 | 举报

化龙焚天
发表于 2024-2-10 21:56:57 | 显示全部楼层

回复 | 举报

C江秋
lyxhaha 发表于 2024-2-10 20:03
为什么你的Mcreator的字体那么清晰,而我的像狗屎一样

如果指可视化编辑器(就是搭积木的地方)里字体看不清的话,先放大试一下,再不济去设置里启用经典字体
始终在征程上。
发表于 2024-2-16 21:47:36 | 显示全部楼层

回复 | 举报

雾云开发组
为什么我制作出来的模型怪物并没有识别到动画呢,已经确定动画文件名字都没有如何错误
发表于 3 天前 | 显示全部楼层

回复 | 举报

C江秋
Jens_Hon 发表于 2024-2-29 00:20
为什么我制作出来的模型怪物并没有识别到动画呢,已经确定动画文件名字都没有如何错误 ...

github或者mcr工作区我康康
始终在征程上。
发表于 3 天前 | 显示全部楼层

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表