版本信息
你使用的系统: Windows10 64位系统
你用的JDK是: jdk-1.8.0_181
你使用的IDE: IntelliJ IDEA
你使用的IDE版本: 2019.3.3 x64
Forge版本: 1.16.3-34.1.0
Minecraft版本: 1.16.3
Mapping 文件版本: 20200916-1.16.2
问题描述
如题,如何实现类似 ‘跳斩’ 的人物攻击动作:
我想了想在原版mc中, “激流” 附魔 的三叉戟在水中长按右键时有个向前突进的动作,便去翻来看看:
TridentItem
中相关突进动作的代码:
float f7 = playerentity.rotationYaw;
float f = playerentity.rotationPitch;
float f1 = -MathHelper.sin(f7 * (float)Math.PI / 180F)) * MathHelper.cos(f * ((float)Math.PI / 180F));
float f2 = -MathHelper.sin(f * ((float)Math.PI / 180F));
float f3 = MathHelper.cos(f7 * ((float)Math.PI / 180F)) * MathHelper.cos(f * ((float)Math.PI / 180F));
float f4 = MathHelper.sqrt(f1 * f1 + f2 * f2 + f3 * f3);
float f5 = 3.0F * ((1.0F + (float)j) / 4.0F);
f1 = f1 * (f5 / f4);
f2 = f2 * (f5 / f4);
f3 = f3 * (f5 / f4);
playerentity.addVelocity((double)f1, (double)f2, (double)f3);
playerentity.startSpinAttack(20);
if (playerentity.isOnGround()) {
float f6 = 1.1999999F;
playerentity.move(MoverType.SELF, new Vector3d(0.0D, (double)1.1999999F, 0.0D));
}
SoundEvent soundevent;
if (j >= 3) {
soundevent = SoundEvents.ITEM_TRIDENT_RIPTIDE_3;
} else if (j == 2) {
soundevent = SoundEvents.ITEM_TRIDENT_RIPTIDE_2;
} else {
soundevent = SoundEvents.ITEM_TRIDENT_RIPTIDE_1;
}
worldIn.playMovingSound((PlayerEntity)null, playerentity, soundevent, SoundCategory.PLAYERS, 1.0F, 1.0F);rEntity)null, playerentity, soundevent, SoundCategory.PLAYERS, 1.0F, 1.0F);
发现这一动作只是短时间向一方向增速,并不是预想中的动作。
有没有可以参考的mod