- @Override
- public void render(Entity entity, float var1, float var2, float var3, float var4, float var5, float var6)
- {
- setRotationAngles(var1, var2, var3, var4, var5, var6);
- body.render(var6);
- }
- @Override
- public void setRotationAngles(float var1, float var2, float var3, float var4, float var5, float var6)
- {
- }
其中,y(X)为在t(x)时的旋转半径。
我们使用小鸡模型 (ModelChicken) 进行举例(可以通过使用ff和mcp进行反编译得到)
- leg0.rotationX = MathHelper.cos(var1 * 0.6662F) * 1.4F * var2;
- leg1.rotationX = MathHelper.cos(var1 * 0.6662F + 3.1415927F) * 1.4F * var2;
设置旋转角度(setRotationAngles)变量
第一自变量和第二自变量
其中第一自变量(var1)用来决定时间、第二自变量(var2)用来决定振幅。可以通过此处修改生物的移动速度,其移动速度越快,腿部的抬高幅度就越高。归纳起来,可以称第一变量为”时间变量(time)“、第二变量为”移动速度变量(walkspeed)“
以下图为例:
此时腿部绕X轴旋转满足一下公式:
y(time)=cos(time)*walkspeed
上图则描绘为一个生物处于静止状态并逐渐加速达到最大速度后逐渐减速的过程。
那么该如何进行计算呢?
参考 RenderLiving.render(Entity entity, double var2, double var4, double var6, float var8, float var9):
- float time = mob.field_703_S - mob.field_704_R * (1 - var6);
- float walkSpeed = mob.field_705_Q + (mob.field_704_R - mob.field_705_Q) * var6;
确切地来说第三自变量不好进行命名,因为其根据不同文件有如下三种功能:
- 狼:尾巴的角度
- 墨鱼:触须的角度
- 鸡:翅膀的角度
您只需要做的即是在渲染文件(renderfile)中修改handleRotationFloat即可。
以墨鱼为例:
- protected float handleRotationFloat(EntitySquid entitysquid, float f)
- {
- //f == Timer.renderPartialTicks and represents the passed ticks since the last rendercall (0.0 - 1.0), it gets passed down from runGameLoop() in Minecraft.java.
- return entitysquid.lastTentacleAngle + (entitysquid.tentacleAngle - entitysquid.lastTentacleAngle) * f;
- }
第四和第五变量。
分别描述了旋转的偏转(rotationYaw)以及倾斜(RotationPitch)。
- float rotationYaw = entityliving.prevRotationYaw + (entityliving.rotationYaw - entityliving.prevRotationYaw) * f1;
- float rotationPitch = entityliving.prevRotationPitch + (entityliving.rotationPitch - entityliving.prevRotationPitch) * f1;
- head.rotateAngleY = f3 / 57.29578F;
- head.rotateAngleX = f4 / 57.29578F;
其中57.29578为由角度制换算成弧度制的系数(180/pi)。
第六变量
该变量描述的是运动的数值范围,这一变量通常无须理会。
- float scale = 1 / 16.0f;
小结
决定旋转角度的变量有如下6个:
- 运动动画的时间
- 运动动画的速度
- 那个虽然有用但不知道如何命名的变量
- 旋转的偏转
- 旋转的倾斜
- 数值大小
希望这些信息能够有用~~~