From d6495e5b7da6ec0486321c583ef04688b87b6833 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sat, 8 Mar 2025 02:11:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A9=BE=E9=A9=B6=E5=91=98=E4=B8=8A=E8=BD=A6?= =?UTF-8?q?=E6=9C=89=E7=82=AE=E5=A1=94=E7=9A=84=E8=BD=BD=E5=85=B7=E6=97=B6?= =?UTF-8?q?,=E5=B0=86=E7=8E=A9=E5=AE=B6=E8=A7=86=E8=A7=92=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=BA=E7=82=AE=E5=A1=94=E8=A7=92=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/base/VehicleEntity.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java index f0b1f19f7..320064a05 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/base/VehicleEntity.java @@ -263,24 +263,12 @@ public abstract class VehicleEntity extends Entity { } else if (!player.isShiftKeyDown()) { if (this.getFirstPassenger() == null) { if (player instanceof FakePlayer) return InteractionResult.PASS; - if (this instanceof LandArmorEntity landArmorEntity) { - player.setXRot((float) getXRotFromVector(landArmorEntity.getBarrelVec(1))); - player.setYRot((float) getYRotFromVector(landArmorEntity.getBarrelVec(1))); - } else { - player.setXRot(this.getXRot()); - player.setYRot(this.getYRot()); - } + setDriverAngle(player); return player.startRiding(this) ? InteractionResult.CONSUME : InteractionResult.PASS; } else if (!(this.getFirstPassenger() instanceof Player)) { if (player instanceof FakePlayer) return InteractionResult.PASS; this.getFirstPassenger().stopRiding(); - if (this instanceof LandArmorEntity landArmorEntity) { - player.setXRot((float) getXRotFromVector(landArmorEntity.getBarrelVec(1))); - player.setYRot((float) getYRotFromVector(landArmorEntity.getBarrelVec(1))); - } else { - player.setXRot(this.getXRot()); - player.setYRot(this.getYRot()); - } + setDriverAngle(player); return player.startRiding(this) ? InteractionResult.CONSUME : InteractionResult.PASS; } if (this.canAddPassenger(player)) { @@ -291,13 +279,28 @@ public abstract class VehicleEntity extends Entity { return InteractionResult.PASS; } + + //将有炮塔的载具驾驶员设置为炮塔角度 + public void setDriverAngle(Player player) { + if (this instanceof LandArmorEntity landArmorEntity) { + player.xRotO = -(float) getXRotFromVector(landArmorEntity.getBarrelVec(1)); + player.setXRot(-(float) getXRotFromVector(landArmorEntity.getBarrelVec(1))); + player.yRotO = -(float) getYRotFromVector(landArmorEntity.getBarrelVec(1)); + player.setYRot(-(float) getYRotFromVector(landArmorEntity.getBarrelVec(1))); + player.setYHeadRot(-(float) getYRotFromVector(landArmorEntity.getBarrelVec(1))); + } else { + player.xRotO = this.getXRot(); + player.setXRot(this.getXRot()); + player.yRotO = this.getYRot(); + player.setYRot(this.getYRot()); + } + } + public double getYRotFromVector(Vec3 vec3) { - this.setDeltaMovement(vec3); return Mth.atan2(vec3.x, vec3.z) * (180F / Math.PI); } public double getXRotFromVector(Vec3 vec3) { - this.setDeltaMovement(vec3); double d0 = vec3.horizontalDistance(); return Mth.atan2(vec3.y, d0) * (180F / Math.PI); }