mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-26 15:27:19 +07:00
Possible weapon autotarget fire fix
This commit is contained in:
parent
94f08fe067
commit
3162f043d2
@ -297,31 +297,9 @@ public class Weapon implements Cloneable{
|
|||||||
mount.warmup = Mathf.lerpDelta(mount.warmup, warmupTarget, shootWarmupSpeed);
|
mount.warmup = Mathf.lerpDelta(mount.warmup, warmupTarget, shootWarmupSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
//rotate if applicable
|
|
||||||
if(rotate && (mount.rotate || mount.shoot) && can){
|
|
||||||
float axisX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
|
||||||
axisY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
|
||||||
|
|
||||||
mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - unit.rotation;
|
|
||||||
mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, rotateSpeed * Time.delta);
|
|
||||||
if(rotationLimit < 360){
|
|
||||||
float dst = Angles.angleDist(mount.rotation, baseRotation);
|
|
||||||
if(dst > rotationLimit/2f){
|
|
||||||
mount.rotation = Angles.moveToward(mount.rotation, baseRotation, dst - rotationLimit/2f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else if(!rotate){
|
|
||||||
mount.rotation = baseRotation;
|
|
||||||
mount.targetRotation = unit.angleTo(mount.aimX, mount.aimY);
|
|
||||||
}
|
|
||||||
|
|
||||||
float
|
float
|
||||||
weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation),
|
|
||||||
mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||||
mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y),
|
mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
||||||
bulletX = mountX + Angles.trnsx(weaponRotation, this.shootX, this.shootY),
|
|
||||||
bulletY = mountY + Angles.trnsy(weaponRotation, this.shootX, this.shootY),
|
|
||||||
shootAngle = bulletRotation(unit, mount, bulletX, bulletY);
|
|
||||||
|
|
||||||
//find a new target
|
//find a new target
|
||||||
if(!controllable && autoTarget){
|
if(!controllable && autoTarget){
|
||||||
@ -355,6 +333,30 @@ public class Weapon implements Cloneable{
|
|||||||
//logic will return shooting as false even if these return true, which is fine
|
//logic will return shooting as false even if these return true, which is fine
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//rotate if applicable
|
||||||
|
if(rotate && (mount.rotate || mount.shoot) && can){
|
||||||
|
float axisX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||||
|
axisY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
||||||
|
|
||||||
|
mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - unit.rotation;
|
||||||
|
mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, rotateSpeed * Time.delta);
|
||||||
|
if(rotationLimit < 360){
|
||||||
|
float dst = Angles.angleDist(mount.rotation, baseRotation);
|
||||||
|
if(dst > rotationLimit/2f){
|
||||||
|
mount.rotation = Angles.moveToward(mount.rotation, baseRotation, dst - rotationLimit/2f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else if(!rotate){
|
||||||
|
mount.rotation = baseRotation;
|
||||||
|
mount.targetRotation = unit.angleTo(mount.aimX, mount.aimY);
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation),
|
||||||
|
bulletX = mountX + Angles.trnsx(weaponRotation, this.shootX, this.shootY),
|
||||||
|
bulletY = mountY + Angles.trnsy(weaponRotation, this.shootX, this.shootY),
|
||||||
|
shootAngle = bulletRotation(unit, mount, bulletX, bulletY);
|
||||||
|
|
||||||
if(alwaysShooting) mount.shoot = true;
|
if(alwaysShooting) mount.shoot = true;
|
||||||
|
|
||||||
//update continuous state
|
//update continuous state
|
||||||
|
Loading…
Reference in New Issue
Block a user