From 5abdadf0c98152c1f4ac8b0cadd34de5e61f7f77 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sun, 26 Jan 2025 15:57:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=BB=9ABMP2=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/Bmp2Model.java | 176 +++++++++++++----- .../entity/vehicle/MobileVehicleEntity.java | 2 +- 2 files changed, 129 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java index 18c6753b8..e714de203 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java @@ -50,57 +50,137 @@ public class Bmp2Model extends GeoModel { CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i); CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i); - float t1 = animatable.getEntityData().get(TRACK_L) + 2 * i % 100; - setTrackPos(trackL, trackLRot, t1); + float t = animatable.getEntityData().get(TRACK_L) + 2 * i; - float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i % 100; - setTrackPos(trackR, trackRRot, t2); - } - } + if (t >= 100) { + t -= 100; + } - private static void setTrackPos(CoreGeoBone track, CoreGeoBone trackRot, float t) { - if (track == null || trackRot == null) return; + if (t < 37.5) { + trackL.setPosY(0); + trackL.setPosZ(3 * t); + trackLRot.setRotX(0); + } - if (t < 37.5) { - track.setPosY(0); - track.setPosZ(3 * t); - trackRot.setRotX(0); - } else if (t < 39.5) { - track.setPosY(-(t - 37.5f) * 3 * 0.7071f); - track.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f); - trackRot.setRotX(45 * Mth.DEG_TO_RAD); - } else if (t < 41.5) { - track.setPosY(-5.3f - (t - 39.5f) * 3); - track.setPosZ(116); - trackRot.setRotX(90 * Mth.DEG_TO_RAD); - } else if (t < 43) { - track.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f); - track.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f); - trackRot.setRotX(135 * Mth.DEG_TO_RAD); - } else if (t < 49.5) { - track.setPosY(-15.6f - (t - 43f) * 3 * 0.45f); - track.setPosZ(109.5f - (t - 43f) * 3 * 0.75f); - trackRot.setRotX(150 * Mth.DEG_TO_RAD); - } else if (t < 76.5) { - track.setPosY(-23.5f); - track.setPosZ(95f - (t - 49.5f) * 3); - trackRot.setRotX(180 * Mth.DEG_TO_RAD); - } else if (t < 83.5) { - track.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f); - track.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f); - trackRot.setRotX(210 * Mth.DEG_TO_RAD); - } else if (t < 85.5) { - track.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f); - track.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f); - trackRot.setRotX(225 * Mth.DEG_TO_RAD); - } else if (t < 87) { - track.setPosY(-9.2f + (t - 85.5f) * 3); - track.setPosZ(-6.9f); - trackRot.setRotX(270 * Mth.DEG_TO_RAD); - } else if (t < 89) { - track.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f); - track.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f); - trackRot.setRotX(315 * Mth.DEG_TO_RAD); + if (t >= 37.5 && t < 39.5) { + trackL.setPosY(-(t - 37.5f) * 3 * 0.7071f); + trackL.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f); + trackLRot.setRotX(45 * Mth.DEG_TO_RAD); + } + + if (t >= 39.5 && t < 41.5) { + trackL.setPosY(-5.3f - (t - 39.5f) * 3); + trackL.setPosZ(116); + trackLRot.setRotX(90 * Mth.DEG_TO_RAD); + } + + if (t >= 41.5 && t < 43) { + trackL.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f); + trackL.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f); + trackLRot.setRotX(135 * Mth.DEG_TO_RAD); + } + + if (t >= 43 && t < 49.5) { + trackL.setPosY(-15.6f - (t - 43f) * 3 * 0.45f); + trackL.setPosZ(109.5f - (t - 43f) * 3 * 0.75f); + trackLRot.setRotX(150 * Mth.DEG_TO_RAD); + } + + if (t >= 49.5 && t < 76.5) { + trackL.setPosY(-23.5f); + trackL.setPosZ(95f - (t - 49.5f) * 3); + trackLRot.setRotX(180 * Mth.DEG_TO_RAD); + } + + if (t >= 76.5 && t < 83.5) { + trackL.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f); + trackL.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f); + trackLRot.setRotX(210 * Mth.DEG_TO_RAD); + } + + if (t >= 83.5 && t < 85.5) { + trackL.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f); + trackL.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f); + trackLRot.setRotX(225 * Mth.DEG_TO_RAD); + } + + if (t >= 85.5 && t < 87) { + trackL.setPosY(-9.2f + (t - 85.5f) * 3); + trackL.setPosZ(-6.9f); + trackLRot.setRotX(270 * Mth.DEG_TO_RAD); + } + + if (t >= 87 && t < 89) { + trackL.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f); + trackL.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f); + trackLRot.setRotX(315 * Mth.DEG_TO_RAD); + } + + float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i; + + if (t2 >= 100) { + t2 -= 100; + } + + if (t2 < 37.5) { + trackR.setPosY(0); + trackR.setPosZ(3 * t2); + trackRRot.setRotX(0); + } + + if (t2>= 37.5 && t2< 39.5) { + trackR.setPosY(-(t2- 37.5f) * 3 * 0.7071f); + trackR.setPosZ(3 * 37.5f + (t2- 37.5f) * 3 * 0.7071f); + trackRRot.setRotX(45 * Mth.DEG_TO_RAD); + } + + if (t2>= 39.5 && t2< 41.5) { + trackR.setPosY(-5.3f - (t2- 39.5f) * 3); + trackR.setPosZ(116); + trackRRot.setRotX(90 * Mth.DEG_TO_RAD); + } + + if (t2>= 41.5 && t2< 43) { + trackR.setPosY(-11.6f - (t2- 41.5f) * 3 * 0.7071f); + trackR.setPosZ(115 - (t2- 41.5f) * 3 * 0.7071f); + trackRRot.setRotX(135 * Mth.DEG_TO_RAD); + } + + if (t2>= 43 && t2< 49.5) { + trackR.setPosY(-15.6f - (t2- 43f) * 3 * 0.45f); + trackR.setPosZ(109.5f - (t2- 43f) * 3 * 0.75f); + trackRRot.setRotX(150 * Mth.DEG_TO_RAD); + } + + if (t2>= 49.5 && t2< 76.5) { + trackR.setPosY(-23.5f); + trackR.setPosZ(95f - (t2- 49.5f) * 3); + trackRRot.setRotX(180 * Mth.DEG_TO_RAD); + } + + if (t2>= 76.5 && t2< 83.5) { + trackR.setPosY(-23.5f + (t2- 76.5f) * 3 * 0.45f); + trackR.setPosZ(13.5f - (t2- 76.5f) * 3 * 0.75f); + trackRRot.setRotX(210 * Mth.DEG_TO_RAD); + } + + if (t2>= 83.5 && t2< 85.5) { + trackR.setPosY(-12.7f + (t2- 83.5f) * 3 * 0.7071f); + trackR.setPosZ(-3.5f - (t2- 83.5f) * 3 * 0.7071f); + trackRRot.setRotX(225 * Mth.DEG_TO_RAD); + } + + if (t2>= 85.5 && t2< 87) { + trackR.setPosY(-9.2f + (t2- 85.5f) * 3); + trackR.setPosZ(-6.9f); + trackRRot.setRotX(270 * Mth.DEG_TO_RAD); + } + + if (t2>= 87 && t2< 89) { + trackR.setPosY(-4.3f + (t2- 87f) * 3 * 0.7071f); + trackR.setPosZ(-6.9f + (t2- 87f) * 3 * 0.7071f); + trackRRot.setRotX(315 * Mth.DEG_TO_RAD); + } } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java index bc145f288..cd1c8e717 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/MobileVehicleEntity.java @@ -163,7 +163,7 @@ public class MobileVehicleEntity extends EnergyVehicleEntity { if (!this.canCrushEntities()) return; if (velocity.horizontalDistance() < 0.25) return; if (isRemoved()) return; - var frontBox = getBoundingBox().move(velocity.scale(0.5)); + var frontBox = getBoundingBox().move(velocity.scale(0.6)); var velAdd = velocity.add(0, 0, 0).scale(0.9); var entities = level().getEntities(EntityTypeTest.forClass(Entity.class), frontBox,