添加火炮HUD的标尺功能

This commit is contained in:
Atsuihsio 2024-09-12 06:08:24 +08:00
parent 16df84e0a3
commit 271917eb92
3 changed files with 5 additions and 4 deletions

View file

@ -40,19 +40,20 @@ public class CannonHudOverlay {
float xRotOffset = Mth.lerp(event.getPartialTick(), player.xRotO, player.getXRot()); float xRotOffset = Mth.lerp(event.getPartialTick(), player.xRotO, player.getXRot());
float diffY = Objects.requireNonNull(player.getVehicle()).getViewYRot(event.getPartialTick()) - yRotOffset; float diffY = Objects.requireNonNull(player.getVehicle()).getViewYRot(event.getPartialTick()) - yRotOffset;
float diffX = Objects.requireNonNull(player.getVehicle()).getViewXRot(event.getPartialTick()) - xRotOffset + 1.3f; float diffX = Objects.requireNonNull(player.getVehicle()).getViewXRot(event.getPartialTick()) - xRotOffset + 1.3f;
float fovAdjust = (float) 70 / Minecraft.getInstance().options.fov().get();
if (diffY > 180.0f) { if (diffY > 180.0f) {
diffY -= 360.0f; diffY -= 360.0f;
} else if (diffY < -180.0f) { } else if (diffY < -180.0f) {
diffY += 360.0f; diffY += 360.0f;
} }
float f = (float)Math.min(w, h); float f = (float)Math.min(w, h);
float f1 = Math.min((float)w / f, (float)h / f); float f1 = Math.min((float)w / f, (float)h / f) * fovAdjust;
int i = Mth.floor(f * f1); int i = Mth.floor(f * f1);
int j = Mth.floor(f * f1); int j = Mth.floor(f * f1);
int k = (w - i) / 2; int k = (w - i) / 2;
int l = (h - j) / 2; int l = (h - j) / 2;
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/cannon/cannon_crosshair.png"), k, l, 0, 0.0F, i, j, i, j); preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/cannon/cannon_crosshair.png"), k, l, 0, 0.0F, i, j, i, j);
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/cannon/indicator.png"), k + 13 * diffY, l + 17 * diffX, 0, 0.0F, i, j, i, j); preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/cannon/indicator.png"), k + 15.6f * diffY * fovAdjust, l + 20.4f * diffX * fovAdjust, 0, 0.0F, i, j, i, j);
} }
RenderSystem.depthMask(true); RenderSystem.depthMask(true);
RenderSystem.defaultBlendFunc(); RenderSystem.defaultBlendFunc();

View file

@ -252,7 +252,7 @@ public class Mle1934Entity extends PathfinderMob implements GeoEntity, ICannonEn
entityToSpawnLeft.setPos(this.getX() + leftPos.x, entityToSpawnLeft.setPos(this.getX() + leftPos.x,
this.getEyeY() - 0.2 + leftPos.y, this.getEyeY() - 0.2 + leftPos.y,
this.getZ() + leftPos.z); this.getZ() + leftPos.z);
entityToSpawnLeft.shoot(this.getLookAngle().x, this.getLookAngle().y, this.getLookAngle().z, 18, 0.05f); entityToSpawnLeft.shoot(this.getLookAngle().x, this.getLookAngle().y, this.getLookAngle().z, 15, 0.05f);
level.addFreshEntity(entityToSpawnLeft); level.addFreshEntity(entityToSpawnLeft);
//右炮管 //右炮管
@ -267,7 +267,7 @@ public class Mle1934Entity extends PathfinderMob implements GeoEntity, ICannonEn
entityToSpawnRight.setPos(this.getX() + rightPos.x, entityToSpawnRight.setPos(this.getX() + rightPos.x,
this.getEyeY() - 0.2 + rightPos.y, this.getEyeY() - 0.2 + rightPos.y,
this.getZ() + rightPos.z); this.getZ() + rightPos.z);
entityToSpawnRight.shoot(this.getLookAngle().x, this.getLookAngle().y, this.getLookAngle().z, 18, 0.05f); entityToSpawnRight.shoot(this.getLookAngle().x, this.getLookAngle().y, this.getLookAngle().z, 15, 0.05f);
level.addFreshEntity(entityToSpawnRight); level.addFreshEntity(entityToSpawnRight);
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> capability.recoilHorizon = 1); player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> capability.recoilHorizon = 1);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB