BLOCKBENCH怎么做动态模型 JAVA 1.12
也许你可以看看这个有没有帮助qwqhttps://www.bilibili.com/video/av425510170/
以下是一个简单的示例代码,显示如何在BLOCKBENCH中创建动态模型:
java
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class CustomModel extends ModelBase {
private ModelRenderer head;
private ModelRenderer body;
private ModelRenderer armLeft;
private ModelRenderer armRight;
public CustomModel() {
textureWidth = 64;
textureHeight = 32;
head = new ModelRenderer(this, 0, 0);
head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
head.setRotationPoint(0.0F, 0.0F, 0.0F);
body = new ModelRenderer(this, 16, 16);
body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, 0.0F);
body.setRotationPoint(0.0F, 0.0F, 0.0F);
armLeft = new ModelRenderer(this, 40, 16);
armLeft.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
armLeft.setRotationPoint(5.0F, 2.0F, 0.0F);
armRight = new ModelRenderer(this, 40, 16);
armRight.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
armRight.setRotationPoint(-5.0F, 2.0F, 0.0F);
}
public void render(Entity entity, float time, float speed, float rotationAngleX, float rotationAngleY, float rotationAngleZ, float scale) {
super.render(entity, time, speed, rotationAngleX, rotationAngleY, rotationAngleZ, scale);
setRotationAngles(time, speed, rotationAngleX, rotationAngleY, rotationAngleZ, scale, entity);
head.render(scale);
body.render(scale);
armLeft.render(scale);
armRight.render(scale);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float time, float speed, float rotationAngleX, float rotationAngleY, float rotationAngleZ, float scale, Entity entity) {
float swingAmount = 0.6f;
float swingSpeed = 1.0f;
armLeft.rotateAngleX = (float)Math.sin(time * swingSpeed) * swingAmount * speed;
armRight.rotateAngleX = (float)Math.cos(time * swingSpeed) * swingAmount * speed;
}
}
创建了一个CustomModel类来定义的模型。模型包括头、身体和两个胳膊部件。使用ModelRenderer类来创建每个部件,并设置其大小、位置和旋转角度。
在CustomModel类中,定义了一个render()方法和一个setRotationAngles()方法。render()方法负责将模型渲染到屏幕上,并根据给定的参数设置每个部件的位置和角度。setRotationAngles()方法用于更改模型的角度和位置,以使其能够动态地变化
java
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class CustomModel extends ModelBase {
private ModelRenderer head;
private ModelRenderer body;
private ModelRenderer armLeft;
private ModelRenderer armRight;
public CustomModel() {
textureWidth = 64;
textureHeight = 32;
head = new ModelRenderer(this, 0, 0);
head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
head.setRotationPoint(0.0F, 0.0F, 0.0F);
body = new ModelRenderer(this, 16, 16);
body.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, 0.0F);
body.setRotationPoint(0.0F, 0.0F, 0.0F);
armLeft = new ModelRenderer(this, 40, 16);
armLeft.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
armLeft.setRotationPoint(5.0F, 2.0F, 0.0F);
armRight = new ModelRenderer(this, 40, 16);
armRight.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, 0.0F);
armRight.setRotationPoint(-5.0F, 2.0F, 0.0F);
}
public void render(Entity entity, float time, float speed, float rotationAngleX, float rotationAngleY, float rotationAngleZ, float scale) {
super.render(entity, time, speed, rotationAngleX, rotationAngleY, rotationAngleZ, scale);
setRotationAngles(time, speed, rotationAngleX, rotationAngleY, rotationAngleZ, scale, entity);
head.render(scale);
body.render(scale);
armLeft.render(scale);
armRight.render(scale);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float time, float speed, float rotationAngleX, float rotationAngleY, float rotationAngleZ, float scale, Entity entity) {
float swingAmount = 0.6f;
float swingSpeed = 1.0f;
armLeft.rotateAngleX = (float)Math.sin(time * swingSpeed) * swingAmount * speed;
armRight.rotateAngleX = (float)Math.cos(time * swingSpeed) * swingAmount * speed;
}
}
创建了一个CustomModel类来定义的模型。模型包括头、身体和两个胳膊部件。使用ModelRenderer类来创建每个部件,并设置其大小、位置和旋转角度。
在CustomModel类中,定义了一个render()方法和一个setRotationAngles()方法。render()方法负责将模型渲染到屏幕上,并根据给定的参数设置每个部件的位置和角度。setRotationAngles()方法用于更改模型的角度和位置,以使其能够动态地变化