创建箭时发现了一个奇怪的问题,当发射箭的瞬间,箭会转动,而且在生存模式下才有这个问题,在创造模式下则没事,翻EntityArrow源码发现那么一段话:
public void onUpdate()
{
super.onUpdate();
......
if (movingobjectposition.entityHit != null)
{
......
if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k))
{
......
}
else
{
this.motionX *= -0.10000000149011612D;
this.motionY *= -0.10000000149011612D;
this.motionZ *= -0.10000000149011612D;
this.rotationYaw += 180.0F;
this.prevRotationYaw += 180.0F;
this.ticksInAir = 0;
}
}
}
大意为:当碰撞到实体并且没能造成实体伤害,则产生振动旋转效果。多次测试发现当箭射出瞬间碰到了弓,估计是因为这个原因导致箭旋转了。于是复制源码新建一个类,注释掉这几句话之后,马上没有旋转的问题了。
// this.motionX *= -0.10000000149011612D;
// this.motionY *= -0.10000000149011612D;
// this.motionZ *= -0.10000000149011612D;
// this.rotationYaw += 180.0F;
// this.prevRotationYaw += 180.0F;

