Привет, друзья.
В общем вопросик такой. У меня есть модель, энтити и рендерер для всей этой темы. Я смог заставить модельку зарендериться у моего игрока, даже она крутится (кое-как) вместе с головой игрока. Однако проблема в том что я не могу как-то сделать это грамотно. Если у кого то есть инфа о том как можно мне помочь, до буду очень рад увидеть её.
Конкретнее что не так : Моделька моя странно очень крутится. Её оборот вращения происходит не вокруг себя а вокруг игрока я бы сказал. При том что в каком то положении она далеко от игрока, а в каком то совсем близко.
В общем вопросик такой. У меня есть модель, энтити и рендерер для всей этой темы. Я смог заставить модельку зарендериться у моего игрока, даже она крутится (кое-как) вместе с головой игрока. Однако проблема в том что я не могу как-то сделать это грамотно. Если у кого то есть инфа о том как можно мне помочь, до буду очень рад увидеть её.
Конкретнее что не так : Моделька моя странно очень крутится. Её оборот вращения происходит не вокруг себя а вокруг игрока я бы сказал. При том что в каком то положении она далеко от игрока, а в каком то совсем близко.
EventHandler:
@SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Pre event) {
ModelBase hat = new ModelHat();
Entity ehat = new EntityHat(Minecraft.getMinecraft().theWorld);
RenderHat rhat = new RenderHat();
GL11.glPushMatrix();
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GL11.glTranslatef((float)0+0.5f, (float)0+0.5f, (float)0+0.5f);
GL11.glRotated(1,0,1,1);
GL11.glScalef(0.2f,0.2f,0.2f);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_TEXTURE_2D);
rhat.doRender(ehat, 0F, 0F, 0F, 0F, 0.3F);
GL11.glPopAttrib();
GL11.glPopMatrix();
}
Renderer:
public class RenderHat extends Render{
private final ModelBase hat = new ModelHat();
@Override
public void doRender(Entity entity, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_,
float p_76986_9_) {
ModelBase hat = new ModelHat();
Entity ehat = new EntityHat(Minecraft.getMinecraft().theWorld);
float yaw = Minecraft.getMinecraft().thePlayer.prevRotationYaw;
float pitch = Minecraft.getMinecraft().thePlayer.prevRotationPitch;
GL11.glPushMatrix();
GL11.glRotatef(yaw, 0F, -1.0F, 0F);
GL11.glRotatef(pitch, 1.0F, 0F, 0F);
GL11.glTranslatef(0F, -10F, 0F);
GL11.glScalef(-1.0F, -1.0F, 1.0F);
hat.render(ehat, 0, 0F, 0F, 0F, 0F, 0.3F);
GL11.glPopMatrix();
}
@Override
protected ResourceLocation getEntityTexture(Entity entity) {
return texture;
}
}
Моделька:
public class ModelHat extends ModelBase
{
//fields
ModelRenderer Shape1;
ModelRenderer Shape2;
public ModelHat()
{
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(-4F, 0F, -4F, 8, 1, 8);
Shape1.setRotationPoint(0F, -10F, 0F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 0);
Shape2.addBox(-3F, -3F, -3F, 6, 6, 6);
Shape2.setRotationPoint(0F, -13F, 0F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
Shape1.render(f5);
Shape2.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}
Последнее редактирование: