修复其他船螺旋桨同步旋转的问题
This commit is contained in:
parent
61c9dd1c92
commit
edb1738d76
3 changed files with 20 additions and 13 deletions
|
@ -9,12 +9,11 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static com.atsuishio.superbwarfare.entity.SpeedboatEntity.DELTA_ROT;
|
||||
import static com.atsuishio.superbwarfare.entity.SpeedboatEntity.POWER;
|
||||
import static com.atsuishio.superbwarfare.entity.SpeedboatEntity.*;
|
||||
|
||||
public class SpeedboatModel extends GeoModel<SpeedboatEntity> {
|
||||
public static float lerpRotY = 0f;
|
||||
public static float rotorSpeed = 0f;
|
||||
public float rotorSpeed = 0f;
|
||||
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(SpeedboatEntity entity) {
|
||||
|
@ -39,8 +38,7 @@ public class SpeedboatModel extends GeoModel<SpeedboatEntity> {
|
|||
CoreGeoBone rotor = getAnimationProcessor().getBone("Rotor");
|
||||
CoreGeoBone duo = getAnimationProcessor().getBone("duo");
|
||||
|
||||
rotorSpeed = Mth.lerp(0.1f * times, rotorSpeed, 10 * animatable.getEntityData().get(POWER));
|
||||
rotor.setRotZ(rotor.getRotZ() + rotorSpeed);
|
||||
rotor.setRotZ(5 * animatable.getEntityData().get(ROTOR));
|
||||
|
||||
lerpRotY = Mth.lerp(0.5f * times, lerpRotY, animatable.getEntityData().get(POWER) > 0 ? animatable.getEntityData().get(DELTA_ROT) : -animatable.getEntityData().get(DELTA_ROT));
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
public static final EntityDataAccessor<Float> ROT_Y = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
public static final EntityDataAccessor<Float> DELTA_ROT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
public static final EntityDataAccessor<Float> POWER = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
public static final EntityDataAccessor<Float> ROTOR = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT);
|
||||
|
||||
public static final float MAX_HEALTH = CannonConfig.MK42_HP.get();
|
||||
|
||||
|
@ -82,6 +83,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
this.entityData.define(ROT_Y, 0f);
|
||||
this.entityData.define(DELTA_ROT, 0f);
|
||||
this.entityData.define(POWER, 0f);
|
||||
this.entityData.define(ROTOR, 0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -90,6 +92,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
compound.putFloat("Energy", this.entityData.get(ENERGY));
|
||||
compound.putFloat("Power", this.entityData.get(POWER));
|
||||
compound.putFloat("DeltaRot", this.entityData.get(DELTA_ROT));
|
||||
compound.putFloat("Rotor", this.entityData.get(ROTOR));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -97,6 +100,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
this.entityData.set(ENERGY, compound.getFloat("Energy"));
|
||||
this.entityData.set(POWER, compound.getFloat("Power"));
|
||||
this.entityData.set(DELTA_ROT, compound.getFloat("DeltaRot"));
|
||||
this.entityData.set(ROTOR, compound.getFloat("Rotor"));
|
||||
if (compound.contains("Health")) {
|
||||
this.entityData.set(HEALTH, compound.getFloat("Health"));
|
||||
} else {
|
||||
|
@ -217,7 +221,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
|
||||
if (this.isInWater()) {
|
||||
fluidFloat = -0.025 + 0.05 * getSubmergedHeight(this);
|
||||
float f = 0.87f + 0.09f * Mth.abs(90 - (float) calculateAngle(this.getDeltaMovement(), this.getViewVector(1))) / 90;
|
||||
float f = 0.7f + 0.09f * Mth.abs(90 - (float) calculateAngle(this.getDeltaMovement(), this.getViewVector(1))) / 90;
|
||||
this.setDeltaMovement(this.getDeltaMovement().add(this.getViewVector(1).normalize().scale(0.04 * this.getDeltaMovement().length())));
|
||||
this.setDeltaMovement(this.getDeltaMovement().multiply(f, 0.85, f));
|
||||
} else if (this.onGround()) {
|
||||
|
@ -298,11 +302,11 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
diffY = (float) Mth.lerp(0.1 * diffY, diffY, 0);
|
||||
|
||||
if (this.getPersistentData().getBoolean("forward")) {
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) + 0.08f);
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) + 0.02f);
|
||||
}
|
||||
|
||||
if (this.getPersistentData().getBoolean("backward")) {
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) - 0.12f);
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) - 0.02f);
|
||||
if (this.getPersistentData().getBoolean("left")) {
|
||||
diffY = Mth.clamp(diffY + 1f, 0, 5);
|
||||
handleSetDiffY(diffY);
|
||||
|
@ -324,10 +328,8 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
level().playLocalSound(this.getX(), this.getY() + this.getBbHeight() * 0.5, this.getZ(), this.getEngineSound(), this.getSoundSource(), Math.min((this.inputUp || this.inputDown ? 7.5f : 5f) * 2 * Mth.abs(this.entityData.get(POWER)), 0.25f), (random.nextFloat() * 0.1f + 1f), false);
|
||||
}
|
||||
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) * 0.3f);
|
||||
|
||||
this.flyDist = this.entityData.get(POWER);
|
||||
|
||||
this.entityData.set(POWER, this.entityData.get(POWER) * 0.9f);
|
||||
this.entityData.set(ROTOR, this.entityData.get(ROTOR) + this.entityData.get(POWER));
|
||||
this.entityData.set(DELTA_ROT, this.entityData.get(DELTA_ROT) * 0.8f);
|
||||
|
||||
if (this.isInWater() || this.isUnderWater()) {
|
||||
|
|
|
@ -2,11 +2,16 @@
|
|||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.speedboat.idle": {
|
||||
"loop": true
|
||||
"loop": true,
|
||||
"animation_length": 1,
|
||||
"blend_weight": "10",
|
||||
"start_delay": "10"
|
||||
},
|
||||
"animation.speedboat.forward": {
|
||||
"loop": true,
|
||||
"animation_length": 0.5,
|
||||
"blend_weight": "10",
|
||||
"start_delay": "10",
|
||||
"bones": {
|
||||
"Rotor": {
|
||||
"rotation": {
|
||||
|
@ -19,6 +24,8 @@
|
|||
"animation.speedboat.backward": {
|
||||
"loop": true,
|
||||
"animation_length": 0.5,
|
||||
"blend_weight": "10",
|
||||
"start_delay": "10",
|
||||
"bones": {
|
||||
"Rotor": {
|
||||
"rotation": {
|
||||
|
|
Loading…
Add table
Reference in a new issue