AnimationUtils.java
net.minecraft.client.model.AnimationUtils
信息
- 全限定名:net.minecraft.client.model.AnimationUtils
- 类型:public class
- 包:net.minecraft.client.model
- 源码路径:src/main/java/net/minecraft/client/model/AnimationUtils.java
- 起始行号:L13
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static void animateCrossbowHold(ModelPart rightArm, ModelPart leftArm, ModelPart head, boolean holdingInRightArm) @ L14
- 方法名:animateCrossbowHold
- 源码定位:L14
- 返回类型:void
- 修饰符:public static
参数:
- rightArm: ModelPart
- leftArm: ModelPart
- head: ModelPart
- holdingInRightArm: boolean
说明:
TODO
public static void animateCrossbowCharge(ModelPart rightArm, ModelPart leftArm, float maxCrossbowChargeDuration, float ticksUsingItem, boolean holdingInRightArm) @ L23
- 方法名:animateCrossbowCharge
- 源码定位:L23
- 返回类型:void
- 修饰符:public static
参数:
- rightArm: ModelPart
- leftArm: ModelPart
- maxCrossbowChargeDuration: float
- ticksUsingItem: float
- holdingInRightArm: boolean
说明:
TODO
public static void swingWeaponDown(ModelPart rightArm, ModelPart leftArm, HumanoidArm mainArm, float attackTime, float ageInTicks) @ L37
- 方法名:swingWeaponDown
- 源码定位:L37
- 返回类型:void
- 修饰符:public static
参数:
- rightArm: ModelPart
- leftArm: ModelPart
- mainArm: HumanoidArm
- attackTime: float
- ageInTicks: float
说明:
TODO
public static void bobModelPart(ModelPart modelPart, float ageInTicks, float scale) @ L59
- 方法名:bobModelPart
- 源码定位:L59
- 返回类型:void
- 修饰符:public static
参数:
- modelPart: ModelPart
- ageInTicks: float
- scale: float
说明:
TODO
public static void bobArms(ModelPart rightArm, ModelPart leftArm, float ageInTicks) @ L64
- 方法名:bobArms
- 源码定位:L64
- 返回类型:void
- 修饰符:public static
参数:
- rightArm: ModelPart
- leftArm: ModelPart
- ageInTicks: float
说明:
TODO
public static <T extends UndeadRenderState> void animateZombieArms(ModelPart leftArm, ModelPart rightArm, boolean aggressive, T state) @ L69
- 方法名:animateZombieArms
- 源码定位:L69
- 返回类型:
void - 修饰符:public static
参数:
- leftArm: ModelPart
- rightArm: ModelPart
- aggressive: boolean
- state: T
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class AnimationUtils {
public static void animateCrossbowHold(ModelPart rightArm, ModelPart leftArm, ModelPart head, boolean holdingInRightArm) {
ModelPart holdingArm = holdingInRightArm ? rightArm : leftArm;
ModelPart shootingArm = holdingInRightArm ? leftArm : rightArm;
holdingArm.yRot = (holdingInRightArm ? -0.3F : 0.3F) + head.yRot;
shootingArm.yRot = (holdingInRightArm ? 0.6F : -0.6F) + head.yRot;
holdingArm.xRot = (float) (-Math.PI / 2) + head.xRot + 0.1F;
shootingArm.xRot = -1.5F + head.xRot;
}
public static void animateCrossbowCharge(
ModelPart rightArm, ModelPart leftArm, float maxCrossbowChargeDuration, float ticksUsingItem, boolean holdingInRightArm
) {
ModelPart holdingArm = holdingInRightArm ? rightArm : leftArm;
ModelPart pullingArm = holdingInRightArm ? leftArm : rightArm;
holdingArm.yRot = holdingInRightArm ? -0.8F : 0.8F;
holdingArm.xRot = -0.97079635F;
pullingArm.xRot = holdingArm.xRot;
float useTicks = Mth.clamp(ticksUsingItem, 0.0F, maxCrossbowChargeDuration);
float lerpAlpha = useTicks / maxCrossbowChargeDuration;
pullingArm.yRot = Mth.lerp(lerpAlpha, 0.4F, 0.85F) * (holdingInRightArm ? 1 : -1);
pullingArm.xRot = Mth.lerp(lerpAlpha, pullingArm.xRot, (float) (-Math.PI / 2));
}
public static void swingWeaponDown(ModelPart rightArm, ModelPart leftArm, HumanoidArm mainArm, float attackTime, float ageInTicks) {
float attack2 = Mth.sin(attackTime * (float) Math.PI);
float attack = Mth.sin((1.0F - (1.0F - attackTime) * (1.0F - attackTime)) * (float) Math.PI);
rightArm.zRot = 0.0F;
leftArm.zRot = 0.0F;
rightArm.yRot = (float) (Math.PI / 20);
leftArm.yRot = (float) (-Math.PI / 20);
if (mainArm == HumanoidArm.RIGHT) {
rightArm.xRot = -1.8849558F + Mth.cos(ageInTicks * 0.09F) * 0.15F;
leftArm.xRot = -0.0F + Mth.cos(ageInTicks * 0.19F) * 0.5F;
rightArm.xRot += attack2 * 2.2F - attack * 0.4F;
leftArm.xRot += attack2 * 1.2F - attack * 0.4F;
} else {
rightArm.xRot = -0.0F + Mth.cos(ageInTicks * 0.19F) * 0.5F;
leftArm.xRot = -1.8849558F + Mth.cos(ageInTicks * 0.09F) * 0.15F;
rightArm.xRot += attack2 * 1.2F - attack * 0.4F;
leftArm.xRot += attack2 * 2.2F - attack * 0.4F;
}
bobArms(rightArm, leftArm, ageInTicks);
}
public static void bobModelPart(ModelPart modelPart, float ageInTicks, float scale) {
modelPart.zRot = modelPart.zRot + scale * (Mth.cos(ageInTicks * 0.09F) * 0.05F + 0.05F);
modelPart.xRot = modelPart.xRot + scale * (Mth.sin(ageInTicks * 0.067F) * 0.05F);
}
public static void bobArms(ModelPart rightArm, ModelPart leftArm, float ageInTicks) {
bobModelPart(rightArm, ageInTicks, 1.0F);
bobModelPart(leftArm, ageInTicks, -1.0F);
}
public static <T extends UndeadRenderState> void animateZombieArms(ModelPart leftArm, ModelPart rightArm, boolean aggressive, T state) {
if (!state.isBaby || state.getMainHandItemStack() == ItemStack.EMPTY) {
boolean animateAttack = state.swingAnimationType != SwingAnimationType.STAB;
if (animateAttack) {
float attackTime = state.attackTime;
float armDrop = (float) -Math.PI / (aggressive ? 1.5F : 2.25F);
float attackYRotModifier = Mth.sin(attackTime * (float) Math.PI);
float attackXRotModifier = Mth.sin((1.0F - (1.0F - attackTime) * (1.0F - attackTime)) * (float) Math.PI);
rightArm.zRot = 0.0F;
rightArm.yRot = -(0.1F - attackYRotModifier * 0.6F);
rightArm.xRot = armDrop;
rightArm.xRot += attackYRotModifier * 1.2F - attackXRotModifier * 0.4F;
leftArm.zRot = 0.0F;
leftArm.yRot = 0.1F - attackYRotModifier * 0.6F;
leftArm.xRot = armDrop;
leftArm.xRot += attackYRotModifier * 1.2F - attackXRotModifier * 0.4F;
}
bobArms(rightArm, leftArm, state.ageInTicks);
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.clamp(), Mth.cos(), Mth.lerp(), Mth.sin()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: