top of page

Ездовой моб

  • ozick
  • 24 янв. 2016 г.
  • 2 мин. чтения

Я хотел бы рассказать о том, как сделать ездового моба, такого, как например: свинка, лошадь, лодка (да, это тоже моб, если вы не знали).

Т.е. то, на чем можно сидя передвигаться.

Для начала, я расскажу некоторые нюансы для модели.

У меня это строус:

Нужно правильно разместить его, относительно центра.

Сначала, нужно решить, на какой точке у моба будет сидеть игрок. У меня это где-то по центру спины. Но дело в том, что игрок "садится" на позицию, паралельную центра модели (того самого блока досок)

Здесь показано, как именно будет размещен игрок на мобе.

Он будет сидеть паралельно центру блока

Ну а высоту уже можно отрегулировать

***********

Для начала, создаем моба (здесь)

И также, лучше добавляем нашему мобу стандарную анимацию ходьбы(здесь и здесь)

Теперь открываем код мода нашего моба

Находим в нем строку:

И удаляем ее. На ее место вставляем этот код:

//ride

public boolean interact(EntityPlayer par1EntityPlayer)

{

par1EntityPlayer.mountEntity(this);

return true;

}

//wasd Keyboard Moving public void moveEntityWithHeading(float par1, float par2)

{

if (this.riddenByEntity != null)

{

this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw;

this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F;

this.setRotation(this.rotationYaw, this.rotationPitch);

this.rotationYawHead = this.renderYawOffset = this.rotationYaw;

par1 = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F;

par2 = ((EntityLivingBase)this.riddenByEntity).moveForward;

//Block jump height

this.stepHeight = 1.0F;

//Moving speed

this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F;

if (!this.worldObj.isRemote)

{

this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue());

super.moveEntityWithHeading(par1, par2);

}

this.prevLimbSwingAmount = this.limbSwingAmount;

double d0 = this.posX - this.prevPosX;

double d1 = this.posZ - this.prevPosZ;

float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F;

if (f4 > 1.0F)

{

f4 = 1.0F;

}

this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F;

this.limbSwing += this.limbSwingAmount;

}

else

{

this.stepHeight = 0.5F;

this.jumpMovementFactor = 0.02F;

super.moveEntityWithHeading(par1, par2);

} } public void updateRiderPosition()

{

super.updateRiderPosition();

if (this.riddenByEntity != null)

{

//Ride height + 1.0D, - 1.0D...

this.riddenByEntity.setPosition(this.posX, this.posY + this.getMountedYOffset() + 0.0D + this.riddenByEntity.getYOffset(), this.posZ);

}

}

И почти все. Осталось отрегулировать высоту "сидения"

В самом конце находим эту строку, и, где показано регулируем высоту. Здесь поможет только метод "тыка". Сначала попробуйте оставить высоту 0.0D (не забудьте сохранить), зайдите в игру. С помощью яйца призыва заспавньте моба, и тыкните по нему ПКМ. Измените позицию камеры, нажав дважды F5. Сразу будет видно, подымать, или опускать. Если игрок сел ниже нужного места, к высоте прибавляем пару десятых единиц. Например, пускай будет 0.2D. Заходим еще раз в игру, и пробуем. Если все еще мало высоты - добавляем. Но может быть такое, что у вас моб "занижен", и даже при значении высота 0.0D, игрок сидит на моба слижком высоко.

В таком случае поменяйте знак перед значением с + на -

И таким же способом подбирайте высоту к своему мобу, только в обратном порядке

+ 0.0D - высоко, тогда ставим -0.2D, если все еще высоко -0.4D

Таким способом и находите нужную высоту к своему мобу.

Вот и все!

 
 
 

Comments


bottom of page